From ca05bf94355c47f9289f0054e2e1c37073edc89f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 11:19:38 +0000 Subject: [PATCH 01/25] chore: start investigating stale newest-story ordering Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/aa45d2a7-539f-4615-833a-9ba254f1ca9d Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2252800 -> 2252800 bytes data/quarantined-sources.json | 18772 +-------------------- data/source-remediation-sweep.json | 123 +- data/top-20-source-remediation.json | 58 +- live-alerts.json | 22782 +------------------------- source-quarantine.html | 12 +- 6 files changed, 249 insertions(+), 41498 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index b13185dfa065db2f8edab7231a8e72c2aa5bdc03..0c64837fb1118dff335b399288eff10ae8df1129 100644 GIT binary patch delta 1915 zcmb7_&u6vx?J*kxnzk3jqjH(p0_B1krx1%tE3C~8ryM5?vd5qfrVkS>*fA?N}by}aG7>PFZs!_!2MpawiR831a9_G2nYyRidXN>@& zR)g#5JfvIcau7UTkW~sVHUx_iY zx2ahAj;QZp!&EDq7JYe=NqKvQX^KT%v+#jMC#IRj6C0{lR7-H9Nyn#{G+o(;5PHQ> zc0@RS^e96Cbn{V$Df}o5`{Taghir}eb?7JlqW?JX!w5UPJT!XdgYdWEs6YPw*kQnL zI}^1lk!*JE93O<0%lXLSa|3LwwA~47o-tts<5I^bv7JQ8jEEM*lB@r6*WRj$Lxp76_bd%N6=xxK< zeo9Ugl0@VEEj35~X8xoalgCulj@B+mWO;T#B2SjwmALA@ftEz?MUcb)SED`X2TrJ# zh@{f7Q&RWxy}7FL?dR9h^m6OJlNNuadXp?4Ex%v@KM(*|fCGX651avpfDjM{hJg`a z6c_`}0udkzoCC&z31AYK0;Yi&Fax~STz+x>=ikP8Zp$|k9bO4v58W7==l|go!MC_A z=zzC5+qtiYe7V^5?Ec)PY>pe0M(8?h;8MANe~YMGHKEVNa=N&&xKUQ5Ofr=&7t48l zXQ!&E*2C_ec~>{K%uRh)c=KS_R39lCo-86-Fa0PBLI}N3hu$n?2O%vM?5I7dLUKx{XaCuUCl$v49OjH^AVYiuZ*ZSTR(s0x$lJ_7KEXL*K=& z!OoRryma}K&=P!He-o+JI!Zj71%zhe+1&4Y%z5f*gIl|h4$^~tJ!QYJ=;AD=W6752e)9X&%4^d#=Hr}6)MpjNy?TuCU+QCz| LdF%Ft$Dw}#N)%RI delta 330 zcmWO0ze@sP9LI6LKKFQ@=Z`zHG_|^<9B$Gfp)eYRXi}jyvWUWv6wVBy<%US2rEs_@ z=hh5*YKw4)hM>_PusLXemW-`E)!I{N*1VgyLDEIA4G{|-OWbJ+S#pG zt$L-p-#lzs#|73aOGCPFc!o;OMuuL!e2%;5o~}hYOGC-oHuzG7wAAMhAx|)`YInMQBZ>YGt8@D5==P`3e%UvN0$P}f;(Ds*{|7^Hc%1+M diff --git a/data/quarantined-sources.json b/data/quarantined-sources.json index a6abc8f9..f8add00d 100644 --- a/data/quarantined-sources.json +++ b/data/quarantined-sources.json @@ -1,18772 +1,14 @@ { - "generatedAt": "2026-04-24T08:17:25.806Z", - "count": 529, + "generatedAt": "2026-04-24T11:19:00.278Z", + "count": 0, "metrics": { - "total": 529, - "newThisWeek": 231, - "avgTimeInQuarantineHours": 153, - "avgHealthScore": 3, + "total": 0, + "newThisWeek": 0, + "avgTimeInQuarantineHours": 0, + "avgHealthScore": 0, "reQuarantineRate": 0, "reQuarantined": 0, "restoredTotal": 0 }, - "sources": [ - { - "id": "euaa-news", - "provider": "EUAA (EU Agency for Asylum) - Press Releases", - "endpoint": "https://euaa.europa.eu/news-events/press-releases", - "kind": "html", - "lane": "border", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eulisa-news-events", - "provider": "eu-LISA - News and Events (RSS)", - "endpoint": "https://www.eulisa.europa.eu/news-and-events.rss", - "kind": "rss", - "lane": "border", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T08:17:25.806Z", - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T08:17:25.806Z", - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "europol-news-rss", - "provider": "Europol - Newsroom (RSS)", - "endpoint": "https://www.europol.europa.eu/cms/api/rss/news", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dutch-police-rss-index", - "provider": "Politie.nl - RSS", - "endpoint": "https://www.politie.nl/rss", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "mossos-news", - "provider": "Mossos d'Esquadra - News", - "endpoint": "https://mossos.gencat.cat/ca/actualitat/", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eppo-news-node-7", - "provider": "European Public Prosecutor's Office - News (RSS)", - "endpoint": "https://www.eppo.europa.eu/en/news.xml", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-commission-counter-terrorism-measures-2026", - "provider": "European Commission - Counter Terrorism Measures 2026", - "endpoint": "https://commission.europa.eu/news-and-media/news/commission-proposes-new-measures-prevent-and-counter-terrorism-2026-02-26_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-commission-home-affairs-topic", - "provider": "European Commission - Home Affairs", - "endpoint": "https://commission.europa.eu/topics/home-affairs_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-council-jha-register-rss", - "provider": "Council of the EU - Latest Documents RSS", - "endpoint": "https://www.consilium.europa.eu/en/register/rss/LD.xml", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-council-press-releases", - "provider": "Council of the European Union a Press Releases (RSS)", - "endpoint": "https://www.consilium.europa.eu/en/rss/pressreleases.ashx", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-council-press-releases-html", - "provider": "Council of the EU - Press Releases", - "endpoint": "https://www.consilium.europa.eu/en/press/press-releases/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-eppo-news", - "provider": "European Public Prosecutor's Office - News", - "endpoint": "https://www.eppo.europa.eu/en/news", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-home-affairs-news", - "provider": "European Commission a Home Affairs News", - "endpoint": "https://home-affairs.ec.europa.eu/news_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-olaf-news", - "provider": "OLAF (EU Anti-Fraud Office) a News", - "endpoint": "https://anti-fraud.ec.europa.eu/media-corner/news_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-security-union-strategy", - "provider": "European Commission a Security Union Strategy", - "endpoint": "https://home-affairs.ec.europa.eu/policies/internal-security_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "europarl-committee-libe", - "provider": "European Parliament - LIBE Press Releases", - "endpoint": "https://www.europarl.europa.eu/committees/en/libe/home/press-releases", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "europarl-committee-sede", - "provider": "European Parliament - SEDE Press Releases", - "endpoint": "https://www.europarl.europa.eu/committees/en/sede/home/press-releases", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "europarl-pressreleases-committees", - "provider": "European Parliament a Press Releases (Committees) (RSS)", - "endpoint": "https://www.europarl.europa.eu/rss/doc/press-releases-committees/en.xml", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "netherlands-police-news", - "provider": "Dutch National Police - News (EN)", - "endpoint": "https://www.politie.nl/en/news", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "echr-press-releases-rss", - "provider": "European Court of Human Rights - Press Releases RSS", - "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echrengpress&query=contentsitename%3AECHR+AND+doctype%3DPR&ranking. Model. Id=11111111-0000-0000-0000-000000000000&sort=kpdate+Descending&start=0", - "kind": "rss", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "french-justice-ministry-news", - "provider": "French Ministry of Justice - News", - "endpoint": "https://www.justice.gouv.fr/actualites", - "kind": "html", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dsn-at-english", - "provider": "DSN Austria - Aktuelles", - "endpoint": "https://www.dsn.gv.at/news.html", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "sapo-se-english", - "provider": "Swedish Security Service English news", - "endpoint": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/press-room/news.html", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "interpol-news-events", - "provider": "INTERPOL a News and Events", - "endpoint": "https://www.interpol.int/News-and-Events", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "osce-press-releases", - "provider": "OSCE a Press Releases", - "endpoint": "https://www.osce.org/press-releases", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "unoct-news", - "provider": "UN Office of Counter-Terrorism (UNOCT) - News", - "endpoint": "https://www.un.org/counterterrorism/news", - "kind": "html", - "lane": "oversight", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "bexley-council-news", - "provider": "Bexley Council a News", - "endpoint": "https://www.bexley.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "brent-council-news", - "provider": "Brent Council a News", - "endpoint": "https://www.brent.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "camden-council-news", - "provider": "Camden Council a News", - "endpoint": "https://news.camden.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "chelsea-westminster-news", - "provider": "Chelsea and Westminster Hospital NHS Foundation Trust a News", - "endpoint": "https://www.chelwest.nhs.uk/about-us/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "croydon-council-news", - "provider": "Croydon Council a News", - "endpoint": "https://news.croydon.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gosh-news", - "provider": "Great Ormond Street Hospital a News", - "endpoint": "https://www.gosh.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "guys-st-thomas-news", - "provider": "Guy's and St Thomas' NHS Foundation Trust a News", - "endpoint": "https://www.guysandstthomas.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hackney-council-news", - "provider": "Hackney Council a News", - "endpoint": "https://news.hackney.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "havering-council-news", - "provider": "Havering Council a News", - "endpoint": "https://www.havering.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hillingdon-council-news", - "provider": "Hillingdon Council a News", - "endpoint": "https://www.hillingdon.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hounslow-council-news", - "provider": "Hounslow Council a News", - "endpoint": "https://www.hounslow.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "islington-council-news", - "provider": "Islington Council a News", - "endpoint": "https://www.islington.media/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "kings-college-hospital-news", - "provider": "King's College Hospital NHS Foundation Trust a News", - "endpoint": "https://www.kch.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "lambeth-council-news", - "provider": "Lambeth Council a News", - "endpoint": "https://love.lambeth.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "lnwh-news", - "provider": "London North West University Healthcare NHS Trust a News", - "endpoint": "https://www.lnwh.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "london-gov-rss-80603", - "provider": "Greater London Authority a RSS Feed 80603", - "endpoint": "https://www.london.gov.uk/rss-feeds/80603", - "kind": "rss", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "london-gov-rss-80632", - "provider": "Greater London Authority a RSS Feed 80632", - "endpoint": "https://www.london.gov.uk/rss-feeds/80632", - "kind": "rss", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "met-police-the-met-tag", - "provider": "Metropolitan Police - The Met Tag", - "endpoint": "https://news.met.police.uk/news/tag/the-met", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "moorfields-news", - "provider": "Moorfields Eye Hospital NHS Foundation Trust a News", - "endpoint": "https://www.moorfields.nhs.uk/about-us/news-and-blogs/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "nelft-news", - "provider": "North East London NHS Foundation Trust a News", - "endpoint": "https://www.nelft.nhs.uk/news-events/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "newham-council-news", - "provider": "Newham Council a News", - "endpoint": "https://www.newham.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "nhs-london-nwl-news", - "provider": "NHS North West London a News", - "endpoint": "https://www.nwlondonicb.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "oxleas-news", - "provider": "Oxleas NHS Foundation Trust a News", - "endpoint": "https://oxleas.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "redbridge-council-news", - "provider": "Redbridge Council a News", - "endpoint": "https://www.redbridge.gov.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "st-georges-news", - "provider": "St George's University Hospitals NHS Foundation Trust a News", - "endpoint": "https://www.stgeorges.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "sutton-council-news", - "provider": "Sutton Council a News", - "endpoint": "https://www.sutton.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "swlstg-news", - "provider": "South West London and St George's Mental Health NHS Trust a News", - "endpoint": "https://www.swlstg.nhs.uk/latest-news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "waltham-forest-council-news", - "provider": "Waltham Forest Council a News", - "endpoint": "https://www.walthamforest.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-fcdo-travel-advice", - "provider": "FCDO a Foreign Travel Advice Index", - "endpoint": "https://www.gov.uk/foreign-travel-advice", - "kind": "html", - "lane": "border", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-border-force", - "provider": "Border Force (UK) a Announcements and Publications", - "endpoint": "https://www.gov.uk/government/organisations/border-force", - "kind": "html", - "lane": "border", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-ukvi", - "provider": "UK Visas and Immigration a Announcements and Publications", - "endpoint": "https://www.gov.uk/government/organisations/uk-visas-and-immigration", - "kind": "html", - "lane": "border", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-terrorism-search", - "provider": "GOV.UK Search - Terrorism", - "endpoint": "https://www.gov.uk/search/all?keywords=terrorism", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "npcc-releases", - "provider": "National Police Chiefs' Council - Releases", - "endpoint": "https://news.npcc.police.uk/releases/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-stops-force-leicestershire", - "provider": "Police.uk - Force Stops (Leicestershire)", - "endpoint": "https://data.police.uk/api/stops-force?force=leicestershire", - "kind": "json", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-stops-street-leicester", - "provider": "Police.uk - Street Stops Around Leicester", - "endpoint": "https://data.police.uk/api/stops-street?lat=52.629729&lng=-1.131592", - "kind": "json", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "foreign-office-blogs", - "provider": "Foreign Office Blogs", - "endpoint": "https://blogs.fco.gov.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "avon-and-somerset-police-news-html", - "provider": "Avon and Somerset Police - News", - "endpoint": "https://www.avonandsomerset.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "avon-somerset-police-news", - "provider": "Avon & Somerset Police a News", - "endpoint": "https://www.avonandsomerset.police.uk/newsroom/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "psni-latest-news", - "provider": "Police Service of Northern Ireland - Latest News", - "endpoint": "https://www.psni.police.uk/latest-news", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-all-rss", - "provider": "West Yorkshire Police - All Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/all/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-appeals-rss", - "provider": "West Yorkshire Police - Appeals Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/appeals/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-news-appeals", - "provider": "West Yorkshire Police - News Appeals", - "endpoint": "https://www.westyorkshirepolice.co.uk/news-appeals", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-news-rss", - "provider": "West Yorkshire Police - News Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-releases-rss", - "provider": "West Yorkshire Police - Releases Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/releases/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "attorney-generals-office-html", - "provider": "Attorney General's Office", - "endpoint": "https://www.gov.uk/government/organisations/attorney-generals-office", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "cabinet-office-html", - "provider": "Cabinet Office", - "endpoint": "https://www.gov.uk/government/organisations/cabinet-office", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "crown-office-news", - "provider": "Crown Office and Procurator Fiscal Service - News", - "endpoint": "https://www.copfs.gov.uk/about-copfs/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "echr-uk-grand-chamber-rss", - "provider": "European Court of Human Rights - UK Grand Chamber RSS", - "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echreng&query=%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28+contentsitename%3AECHR+AND+%28NOT+%28doctype%3DPR+OR+doctype%3DHFCOMOLD+OR+doctype%3DHECOMOLD%29%29+AND+%28%28respondent%3D%22GBR%22%29%29+AND+%28%28documentcollectionid%3D%22GRANDCHAMBER%22%29%29%29+XRANK%28cb%3D14%29+doctypebranch%3AGRANDCHAMBER%29+XRANK%28cb%3D13%29+doctypebranch%3ADECGRANDCHAMBER%29+XRANK%28cb%3D12%29+doctypebranch%3ACHAMBER%29+XRANK%28cb%3D11%29+doctypebranch%3AADMISSIBILITY%29+XRANK%28cb%3D10%29+doctypebranch%3ACOMMITTEE%29+XRANK%28cb%3D9%29+doctypebranch%3AADMISSIBILITYCOM%29+XRANK%28cb%3D8%29+doctypebranch%3ADECCOMMISSION%29+XRANK%28cb%3D7%29+doctypebranch%3ACOMMUNICATEDCASES%29+XRANK%28cb%3D6%29+doctypebranch%3ACLIN%29+doctypebranch%3AADVISORYOPINIONS%29+doctypebranch%3AREPORTS%29+doctypebranch%3AEXECUTION%29+doctypebranch%3AMERITS%29+doctypebranch%3ASCREENINGPANEL%29+XRANK%28cb%3D4%29+importance%3A1%29+XRANK%28cb%3D3%29+importance%3A2%29+XRANK%28cb%3D2%29+importance%3A3%29+XRANK%28cb%3D1%29+importance%3A4%29+XRANK%28cb%3D2%29+languageisocode%3AENG%29+XRANK%28cb%3D1%29+languageisocode%3AFRE&ranking. Model. Id=4180000c-8692-45ca-ad63-74bc4163871b&sort=kpdate+Descending&start=0", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "extremism-commission-blog", - "provider": "Commission for Countering Extremism - Blog", - "endpoint": "https://extremismcommission.blog.gov.uk/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "fcdo-html", - "provider": "Foreign, Commonwealth & Development Office", - "endpoint": "https://www.gov.uk/government/organisations/foreign-commonwealth-development-office", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-scot-access-to-justice-latest", - "provider": "Scottish Government - Access to Justice Latest", - "endpoint": "https://www.gov.scot/policies/access-to-justice/latest/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-cabinet-office-atom", - "provider": "Cabinet Office a GOV.UK Atom Feed", - "endpoint": "https://www.gov.uk/government/organisations/cabinet-office.atom", - "kind": "atom", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-hmcts", - "provider": "HMCTS a Courts and Tribunals Announcements", - "endpoint": "https://www.gov.uk/government/organisations/hm-courts-and-tribunals-service", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-home-office-atom", - "provider": "UK Home Office a Atom Feed", - "endpoint": "https://www.gov.uk/government/organisations/home-office.atom", - "kind": "atom", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-ipco", - "provider": "Investigatory Powers Commissioner's Office a GOV.UK", - "endpoint": "https://www.ipco.org.uk/publications/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-mod-atom", - "provider": "Ministry of Defence a GOV.UK Atom Feed", - "endpoint": "https://www.gov.uk/government/organisations/ministry-of-defence.atom", - "kind": "atom", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-moj-atom", - "provider": "Ministry of Justice a GOV.UK Atom Feed", - "endpoint": "https://www.gov.uk/government/organisations/ministry-of-justice.atom", - "kind": "atom", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-news-and-communications-atom", - "provider": "GOV.UK - News and Communications Atom", - "endpoint": "https://www.gov.uk/search/news-and-communications.atom", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hmiprisons-news", - "provider": "HM Inspectorate of Prisons - News", - "endpoint": "https://hmiprisons.justiceinspectorates.gov.uk/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hmiprobation-news", - "provider": "HM Inspectorate of Probation - News", - "endpoint": "https://hmiprobation.justiceinspectorates.gov.uk/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "home-office-media-blog", - "provider": "Home Office Media Blog", - "endpoint": "https://homeofficemedia.blog.gov.uk/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "independent-reviewer-terrorism-legislation", - "provider": "Independent Reviewer of Terrorism Legislation a Reports", - "endpoint": "https://terrorismlegislationreviewer.independent.gov.uk/category/reports/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "independent-reviewer-terrorism-legislation-html", - "provider": "Independent Reviewer of Terrorism Legislation", - "endpoint": "https://www.gov.uk/government/organisations/independent-reviewer-of-terrorism-legislation", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "judiciary-rss-feeds-page", - "provider": "Judiciary UK - RSS Feeds", - "endpoint": "https://www.judiciary.uk/rss-feeds/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "judiciary-uk-announcements-feed", - "provider": "Judiciary UK - Announcements Feed", - "endpoint": "https://www.judiciary.uk/announcements/feed/", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "judiciary-uk-judgments-feed", - "provider": "Judiciary UK - Judgments Feed", - "endpoint": "https://www.judiciary.uk/judgments/feed/", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "judiciary-uk-publications-feed", - "provider": "Judiciary UK - Publications Feed", - "endpoint": "https://www.judiciary.uk/publications/feed/", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "ministry-of-defence-html", - "provider": "Ministry of Defence", - "endpoint": "https://www.gov.uk/government/organisations/ministry-of-defence", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "ons-html", - "provider": "Office for National Statistics", - "endpoint": "https://www.gov.uk/government/organisations/office-for-national-statistics", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "parliament-all-bills-rss", - "provider": "Parliament - All Bills RSS", - "endpoint": "https://bills.parliament.uk/rss/allbills.rss", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "parliament-private-bills-rss", - "provider": "Parliament - Private Bills RSS", - "endpoint": "https://bills.parliament.uk/rss/privatebills.rss", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "parliament-public-bills-rss", - "provider": "Parliament - Public Bills RSS", - "endpoint": "https://bills.parliament.uk/rss/publicbills.rss", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-crime-categories-2024-01", - "provider": "Police.uk - Crime Categories (2024-01)", - "endpoint": "https://data.police.uk/api/crime-categories?date=2024-01", - "kind": "json", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-crimes-street-dates", - "provider": "Police.uk - Street Crime Dataset Dates", - "endpoint": "https://data.police.uk/api/crimes-street-dates", - "kind": "json", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-outcomes-for-crime-e11dade0", - "provider": "Police.uk - Outcomes For Crime e11dade0", - "endpoint": "https://data.police.uk/api/outcomes-for-crime/e11dade0a92a912d12329b9b2abb856ac9520434ad6845c30f503e9901d140f1", - "kind": "json", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-fai-determinations-rss", - "provider": "Scottish Courts - Fatal Accident Inquiry Determinations RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Fatal. Accident. Inquiry. Determinations", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-fai-hearings-rss", - "provider": "Scottish Courts - Fatal Accident Inquiry Hearings RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Fatal. Accident. Inquiry. Hearings", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-high-court-justiciary-judgments-rss", - "provider": "Scottish Courts - High Court of Justiciary Judgments RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Judgments/?Court=High+Court+of+Justiciary", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-high-court-practice-notes-rss", - "provider": "Scottish Courts - High Court of Justiciary Practice Notes RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Practice. Notes. And. Directions/?Category=High+Court+of+Justiciary", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-judgments-rss", - "provider": "Scottish Courts - Judgments RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Judgments", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-news-articles-rss", - "provider": "Scottish Courts - News Articles RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/News. Articles", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-publications-rss", - "provider": "Scottish Courts - Publications RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Publications", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-sheriff-criminal-practice-notes-rss", - "provider": "Scottish Courts - Sheriff Court Criminal Practice Notes RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Practice. Notes. And. Directions/?Category=Sheriff+Court+Criminal", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-iopc-news", - "provider": "Independent Office for Police Conduct a News", - "endpoint": "https://www.policeconduct.gov.uk/news", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T08:17:25.806Z", - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "act-campaign", - "provider": "ACT Awareness Campaign", - "endpoint": "https://act.campaign.gov.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-contest-strategy", - "provider": "GOV.UK a CONTEST Counter-Terrorism Strategy", - "endpoint": "https://www.gov.uk/government/collections/contest", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-prevent-strategy", - "provider": "UK Home Office - Prevent duty guidance", - "endpoint": "https://www.gov.uk/government/publications/prevent-duty-guidance", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "met-office-seasonal-advice", - "provider": "Met Office - Seasonal Advice", - "endpoint": "https://www.metoffice.gov.uk/weather/warnings-and-advice/seasonal-advice", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "mi5-uk-threat-level", - "provider": "MI5 (Security Service) a UK Threat Level", - "endpoint": "https://www.mi5.gov.uk/UKThreat. Level/UKThreat. Level.xml", - "kind": "rss", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "npsa-national-protective-security-authority", - "provider": "NPSA - Activity on GOV.UK", - "endpoint": "https://www.gov.uk/government/organisations/national-protective-security-authority.atom", - "kind": "rss", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-ncsc-all-rss", - "provider": "UK NCSC - All Updates RSS", - "endpoint": "https://www.ncsc.gov.uk/api/1/services/v1/all-rss-feed.xml", - "kind": "rss", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-prevent-duty-guidance", - "provider": "GOV.UK a Prevent Duty Guidance (Collection)", - "endpoint": "https://www.gov.uk/government/collections/prevent-duty-guidance", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-proscribed-terrorist-orgs", - "provider": "GOV.UK a Proscribed Terrorist Organisations", - "endpoint": "https://www.gov.uk/government/publications/proscribed-terror-groups-or-organisations--2", - "kind": "html", - "lane": "sanctions", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hm-treasury-html", - "provider": "HM Treasury", - "endpoint": "https://www.gov.uk/government/organisations/hm-treasury", - "kind": "html", - "lane": "sanctions", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "ofsi-blog-home", - "provider": "OFSI - Blog", - "endpoint": "https://ofsi.blog.gov.uk/", - "kind": "html", - "lane": "sanctions", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dhs-press-releases", - "provider": "US Department of Homeland Security - News", - "endpoint": "https://www.dhs.gov/news", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "nsa-cybersecurity-news", - "provider": "NSA - Cybersecurity Advisories & Guidance", - "endpoint": "https://www.nsa.gov/Press-Room/Press-Releases-Statements/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "rewards-for-justice", - "provider": "U.S. Department of State - Rewards for Justice", - "endpoint": "https://rewardsforjustice.net/rewards/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "state-dept-terrorism", - "provider": "US State Department - Bureau of Counterterrorism", - "endpoint": "https://www.state.gov/bureaus-offices/under-secretary-for-civilian-security-democracy-and-human-rights/bureau-of-counterterrorism/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "cisa-cybersecurity-advisories", - "provider": "CISA - Cybersecurity Alerts & Advisories", - "endpoint": "https://www.cisa.gov/news-events/cybersecurity-advisories", - "kind": "html", - "lane": "oversight", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "us-treasury-ofac-recent-actions", - "provider": "U.S. Treasury (OFAC) - Recent Actions", - "endpoint": "https://ofac.treasury.gov/recent-actions", - "kind": "html", - "lane": "sanctions", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "a-lady-in-london", - "provider": "A Lady in London", - "endpoint": "https://www.aladyinlondon.com/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-24T03:29:13.488Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T03:29:13.488Z", - "lastFailureAt": "2026-04-24T03:29:13.488Z", - "lastCheckedAt": "2026-04-24T03:29:13.488Z" - }, - { - "id": "north-wales-community-alert", - "provider": "North Wales Community Alert", - "endpoint": "https://www.northwalescommunityalert.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 429", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-17T05:46:58.069Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-24T03:29:13.488Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T03:29:13.488Z", - "lastFailureAt": "2026-04-24T03:29:13.488Z", - "lastCheckedAt": "2026-04-24T03:29:13.488Z" - }, - { - "id": "eurojust-press-releases", - "provider": "Eurojust - Press Releases", - "endpoint": "https://www.eurojust.europa.eu/news/press-releases", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "eu-council-jha-meetings", - "provider": "Council of the EU - JHA Press Releases", - "endpoint": "https://www.consilium.europa.eu/en/press/press-releases/?cc%5B%5D=24", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "norway-pst-news", - "provider": "Norwegian Government - News and Press Releases", - "endpoint": "https://www.regjeringen.no/en/whats-new/news-and-press-releases/id4/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "ocam-be-english", - "provider": "CUTA (Belgium) threat analysis", - "endpoint": "https://cuta.belgium.be/", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T22:54:57.851Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "everything-zany", - "provider": "Everything Zany", - "endpoint": "https://everythingzany.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "manic-mum-life", - "provider": "Manic Mum Life", - "endpoint": "https://www.manic-mumdays.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "really-ree", - "provider": "Really Ree", - "endpoint": "https://reallyree.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "my-community-alert", - "provider": "My Community Alert", - "endpoint": "https://www.mycommunityalert.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T19:28:57.337Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T11:47:27.254Z", - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastCheckedAt": "2026-04-23T11:47:27.254Z" - }, - { - "id": "uk-parliament-defence-committee", - "provider": "UK Parliament a Defence Select Committee", - "endpoint": "https://committees.parliament.uk/committee/24/defence-committee/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "curia-press-rss-en", - "provider": "Court of Justice of the European Union - RSS (EN/FR)", - "endpoint": "https://curia.europa.eu/site/rss.jsp?lang=en&second. Lang=fr", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "eu-cellar-rss-atom", - "provider": "Publications Office of the European Union (CELLAR) a RSS/Atom Feeds", - "endpoint": "https://op.europa.eu/en/web/cellar/cellar-data/rss-and-atom-feeds", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "richmond-council-news", - "provider": "Richmond Council a News", - "endpoint": "https://www.richmond.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "wandsworth-council-news", - "provider": "Wandsworth Council a News", - "endpoint": "https://www.wandsworth.gov.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "scotcourts-rss-feeds-page", - "provider": "Scottish Courts and Tribunals - RSS Feeds", - "endpoint": "https://www.scotcourts.gov.uk/rss-feeds/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "london-resilience", - "provider": "Resilience First - Latest Updates", - "endpoint": "https://www.london.gov.uk/programmes-strategies/fire-and-city-resilience/london-resilience-partnership", - "kind": "html", - "lane": "prevention", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 2, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T23:56:26.571Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T23:56:26.571Z", - "lastFailureAt": "2026-04-22T23:56:26.571Z", - "lastCheckedAt": "2026-04-22T23:56:26.571Z" - }, - { - "id": "echr-key-judgments-rss", - "provider": "European Court of Human Rights - Key Judgments RSS", - "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echreng&query=%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28+contentsitename%3AECHR+AND+%28NOT+%28doctype%3DPR+OR+doctype%3DHFCOMOLD+OR+doctype%3DHECOMOLD%29%29+AND+%28%28importance%3D%221%22%29+OR+%28importance%3D%222%22%29+OR+%28importance%3D%223%22%29%29+AND+%28%28documentcollectionid%3D%22GRANDCHAMBER%22%29+OR+%28documentcollectionid%3D%22CHAMBER%22%29+OR+%28documentcollectionid%3D%22DECGRANDCHAMBER%22%29+OR+%28documentcollectionid%3D%22ADMISSIBILITY%22%29%29%29+XRANK%28cb%3D14%29+doctypebranch%3AGRANDCHAMBER%29+XRANK%28cb%3D13%29+doctypebranch%3ADECGRANDCHAMBER%29+XRANK%28cb%3D12%29+doctypebranch%3ACHAMBER%29+XRANK%28cb%3D11%29+doctypebranch%3AADMISSIBILITY%29+XRANK%28cb%3D10%29+doctypebranch%3ACOMMITTEE%29+XRANK%28cb%3D9%29+doctypebranch%3AADMISSIBILITYCOM%29+XRANK%28cb%3D8%29+doctypebranch%3ADECCOMMISSION%29+XRANK%28cb%3D7%29+doctypebranch%3ACOMMUNICATEDCASES%29+XRANK%28cb%3D6%29+doctypebranch%3ACLIN%29+XRANK%28cb%3D5%29+doctypebranch%3AADVISORYOPINIONS%29+XRANK%28cb%3D4%29+doctypebranch%3AREPORTS%29+XRANK%28cb%3D3%29+doctypebranch%3AEXECUTION%29+XRANK%28cb%3D2%29+doctypebranch%3AMERITS%29+XRANK%28cb%3D1%29+doctypebranch%3ASCREENINGPANEL%29+XRANK%28cb%3D4%29+importance%3A1%29+XRANK%28cb%3D3%29+importance%3A2%29+XRANK%28cb%3D2%29+importance%3A3%29+XRANK%28cb%3D1%29+importance%3A4%29+XRANK%28cb%3D2%29+languageisocode%3AENG%29+XRANK%28cb%3D1%29+languageisocode%3AFRE&ranking. Model. Id=4180000c-8692-45ca-ad63-74bc4163871b&sort=kpdate+Descending&start=0", - "kind": "rss", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 400", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T17:39:27.641Z", - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastCheckedAt": "2026-04-22T17:39:27.641Z" - }, - { - "id": "judiciary-uk-news", - "provider": "Judiciary of England and Wales a News", - "endpoint": "https://www.judiciary.uk/feed/", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T11:44:44.316Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T16:17:11.443Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T16:17:11.443Z", - "lastFailureAt": "2026-04-22T16:17:11.443Z", - "lastCheckedAt": "2026-04-22T16:17:11.443Z" - }, - { - "id": "uclh-news", - "provider": "University College London Hospitals a News", - "endpoint": "https://www.uclh.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "west-yorkshire-police-coroner-appeals-rss", - "provider": "West Yorkshire Police - Coroner Appeals Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/coroner-appeals/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "thank-you-for-the-days", - "provider": "Thank you for the days", - "endpoint": "https://thankyouforthedays.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 2, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "west-yorkshire-police-news", - "provider": "West Yorkshire Police a News", - "endpoint": "https://www.westyorkshire.police.uk/news", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nhs-london-nel-news", - "provider": "NHS North East London a News", - "endpoint": "https://northeastlondon.icb.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T10:07:46.576Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-28T10:07:46.576Z", - "lastFailureAt": "2026-04-21T10:07:46.576Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "kingston-council-news", - "provider": "Kingston Council a News", - "endpoint": "https://www.kingston.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-28T08:24:19.478Z", - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "merton-council-news", - "provider": "Merton Council a News", - "endpoint": "https://www.merton.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-28T08:24:19.478Z", - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "cambridge-news", - "provider": "Cambridge News", - "endpoint": "https://www.cambridge-news.co.uk/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-23T22:53:56.180Z" - }, - { - "id": "deadline-news", - "provider": "Deadline News", - "endpoint": "https://www.deadlinenews.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 20 after repeated failures", - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 500", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-24T03:29:13.488Z" - }, - { - "id": "independent-top-stories", - "provider": "The Independent - Top Stories", - "endpoint": "https://www.independent.co.uk/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-23T20:18:46.625Z" - }, - { - "id": "fmcg-gurus", - "provider": "FMCG Gurus", - "endpoint": "https://fmcggurus.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "portugal-pj-news", - "provider": "Policia Judiciaria Portugal - News", - "endpoint": "https://www.policiajudiciaria.pt/noticias/", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T19:18:33.309Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T15:59:44.503Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T15:59:44.503Z", - "lastFailureAt": "2026-04-20T15:59:44.503Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "guardian-uk-top-stories", - "provider": "The Guardian - UK Top Stories", - "endpoint": "https://www.theguardian.com/uk/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-20T06:30:13.977Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T23:43:16.267Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "silly-old-sod", - "provider": "Silly Old Sod", - "endpoint": "https://www.sillyoldsod.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent timeouts — endpoint may be overloaded or unreachable", - "quarantinedAt": "2026-04-20T04:05:33.139Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T04:05:33.139Z", - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "serious-fraud-office-news", - "provider": "Serious Fraud Office a News", - "endpoint": "https://www.gov.uk/search/news-and-communications?organisations%5B%5D=serious-fraud-office&parent=serious-fraud-office", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T04:05:33.139Z", - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "cheshire-police-alert", - "provider": "Cheshire Police Alert", - "endpoint": "https://www.cheshirepolicealert.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dc-police-community-messaging", - "provider": "Dorset and Cornwall Police - Community Messaging", - "endpoint": "https://community-messaging.dc.police.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "devon-cornwall-alerts", - "provider": "Devon and Cornwall Alerts", - "endpoint": "https://alerts.dc.police.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "south-yorkshire-police-alerts", - "provider": "South Yorkshire Police Alerts", - "endpoint": "https://www.sypalerts.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "stay-in-the-know-home", - "provider": "Stay In The Know - Community Alerts", - "endpoint": "https://www.stayintheknow.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "stay-in-the-know-latest-alerts", - "provider": "Stay In The Know - Latest Alerts", - "endpoint": "https://www.stayintheknow.co.uk/Content/Pages/Latest-Alerts", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-midlands-community-alerts", - "provider": "WMNow - Community Alerts", - "endpoint": "https://www.wmnow.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-community-alert", - "provider": "West Yorkshire Community Alert", - "endpoint": "https://www.wypcommunityalert.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "france24-europe-rss", - "provider": "France 24 a Europe (RSS)", - "endpoint": "https://www.france24.com/en/europe/rss", - "kind": "rss", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-19T16:03:49.134Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T16:03:49.134Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T06:12:01.477Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T05:47:56.833Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T05:47:56.833Z", - "lastFailureAt": "2026-04-23T05:47:56.833Z", - "lastCheckedAt": "2026-04-23T05:47:56.833Z" - }, - { - "id": "bbc-news-uk-politics-legacy", - "provider": "BBC News a UK Politics (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/uk_politics/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-19T03:30:54.684Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T03:30:54.684Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T15:59:44.503Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "rusi-home", - "provider": "RUSI", - "endpoint": "https://www.rusi.org/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 20 after repeated failures", - "quarantinedAt": "2026-04-19T03:30:54.684Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T03:30:54.684Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T03:30:54.684Z", - "lastFailureAt": "2026-04-19T03:30:54.684Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "gnet-youth-rss", - "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", - "endpoint": "https://gnet-research.org/tag/youth/feed/", - "kind": "rss", - "lane": "prevention", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T22:00:46.520Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T11:07:28.674Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T12:15:37.169Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T22:00:46.520Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T17:16:47.386Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T17:39:27.641Z", - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastCheckedAt": "2026-04-22T17:39:27.641Z" - }, - { - "id": "ealing-council-news", - "provider": "Ealing Council a News", - "endpoint": "https://www.ealing.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T21:09:53.488Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T21:09:53.488Z", - "lastFailureAt": "2026-04-18T21:09:53.488Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-ejustice-news-rss", - "provider": "European e-Justice - News RSS", - "endpoint": "https://e-justice.europa.eu/rss/news_en", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-18T13:27:18.679Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T13:27:18.679Z", - "lastFailureAt": "2026-04-18T13:27:18.679Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "just-security", - "provider": "Just Security a Law, Rights & National Security", - "endpoint": "https://www.justsecurity.org/feed/", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T09:29:55.311Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T23:55:39.351Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T09:29:55.311Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T04:05:33.139Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "evening-shire", - "provider": "Evening Shire", - "endpoint": "https://eveningshire.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T07:21:41.099Z", - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastCheckedAt": "2026-04-23T20:18:46.625Z" - }, - { - "id": "quadrant2design-exhibiting-guides", - "provider": "Quadrant2. Design Exhibiting Guides", - "endpoint": "https://www.quadrant2design.com/exhibiting-guides/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T07:21:41.099Z", - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastCheckedAt": "2026-04-23T23:57:53.617Z" - }, - { - "id": "semibold", - "provider": "Semibold", - "endpoint": "https://www.semibold.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T07:21:41.099Z", - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "gnet-radicalisation-rss", - "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", - "endpoint": "https://gnet-research.org/tag/radicalisation/feed/", - "kind": "rss", - "lane": "prevention", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T21:08:30.446Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "barking-dagenham-council-news", - "provider": "Barking and Dagenham Council a News", - "endpoint": "https://www.lbbd.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "hammersmith-fulham-news", - "provider": "Hammersmith and Fulham Council a News", - "endpoint": "https://www.lbhf.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "royal-greenwich-news", - "provider": "Royal Borough of Greenwich a News", - "endpoint": "https://www.royalgreenwich.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-ncsc-threat-reports", - "provider": "National Cyber Security Centre (UK) a Threat Reports", - "endpoint": "https://www.ncsc.gov.uk/api/1/services/v1/report-rss-feed.xml", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T21:08:30.446Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-parliament-isc", - "provider": "UK Parliament a Intelligence and Security Committee (Reports & News)", - "endpoint": "https://isc.independent.gov.uk/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ecfr-feeds-index", - "provider": "ECFR - Feeds", - "endpoint": "https://ecfr.eu/feeds/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "statewatch-news", - "provider": "Statewatch - News", - "endpoint": "https://www.statewatch.org/news/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "clingendael-publications", - "provider": "Clingendael Institute a Publications", - "endpoint": "https://www.clingendael.org/publications", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ecfr-publications", - "provider": "European Council on Foreign Relations (ECFR) a Publications", - "endpoint": "https://ecfr.eu/publications/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "financial-times-world", - "provider": "Financial Times a World", - "endpoint": "https://www.ft.com/world", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "politico-europe", - "provider": "Politico Europe", - "endpoint": "https://www.politico.eu/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "acled-updates", - "provider": "ACLED a Updates and Analysis", - "endpoint": "https://acleddata.com/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "resolve-network-research", - "provider": "RESOLVE Network a Research", - "endpoint": "https://www.resolvenet.org/news", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 17 after repeated failures", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "reuters-uk", - "provider": "Reuters a UK News", - "endpoint": "https://www.reuters.com/world/uk/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "soufan-center-intelbrief", - "provider": "The Soufan Center a Intel. Brief", - "endpoint": "https://thesoufancenter.org/category/intelbrief/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "tony-blair-institute-news", - "provider": "Tony Blair Institute for Global Change a Publications", - "endpoint": "https://institute.global/insights", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "chatham-house-home", - "provider": "Chatham House", - "endpoint": "https://www.chathamhouse.org/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "chatham-house-security-defence", - "provider": "Chatham House - Security and Defence", - "endpoint": "https://www.chathamhouse.org/topics/security-and-defence", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "institute-global-home", - "provider": "Institute for Global Change", - "endpoint": "https://www.institute.global/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "wiltshire-999s", - "provider": "Wiltshire 999s", - "endpoint": "https://www.wiltshire999s.co.uk/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "icsr-kcl", - "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", - "endpoint": "https://icsr.info/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "rand-terrorism-topic", - "provider": "RAND - Terrorism Topic Updates", - "endpoint": "https://www.rand.org/topics/terrorism.html", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "start-baad-database", - "provider": "National Consortium for the Study of Terrorism (START) - Big Allied and Dangerous (BAAD) Database", - "endpoint": "https://www.start.umd.edu/baad/database/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "start-center-publications", - "provider": "START Center (UMD) - News & Publications", - "endpoint": "https://www.start.umd.edu/news", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "bdk-rss", - "provider": "Bund Deutscher Kriminalbeamter - RSS", - "endpoint": "https://www.bdk.de/rss/alle-nachrichten/RSS", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "euractiv-security-rss", - "provider": "BBC News - Europe", - "endpoint": "https://feeds.bbci.co.uk/news/world/europe/rss.xml", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "isd-global-publications", - "provider": "ISD - Publications", - "endpoint": "https://www.isdglobal.org/publications/", - "kind": "html", - "lane": "prevention", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "dw-europe-rss", - "provider": "Deutsche Welle a Europe (RSS)", - "endpoint": "https://rss.dw.com/rdf/rss-en-eu", - "kind": "rss", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "ap-top-news", - "provider": "BBC News - Top Stories", - "endpoint": "https://feeds.bbci.co.uk/news/rss.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "crisis-group", - "provider": "International Crisis Group a Research & Analysis", - "endpoint": "https://www.crisisgroup.org/rss.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "crisis-group-europe", - "provider": "International Crisis Group a Europe (RSS)", - "endpoint": "https://www.crisisgroup.org/rss/56", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "lawfare-blog", - "provider": "Just Security - National Security Analysis", - "endpoint": "https://www.justsecurity.org/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "henry-jackson-society-news", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=henry-jackson-society-news", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun-all", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feeds/all/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun-all-english", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feeds/news-app-english-001-all/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun-homepage", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feeds/favourite-homepage/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun-news-english", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feeds/news-app-english-007-news/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "metro", - "provider": "BBC News - UK", - "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml?source=metro", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "pinknews", - "provider": "Pink. News", - "endpoint": "https://www.pinknews.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T13:19:06.686Z", - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "the-daily-mash", - "provider": "The Daily Mash", - "endpoint": "https://www.thedailymash.co.uk/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T13:19:06.686Z", - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastCheckedAt": "2026-04-23T22:53:56.180Z" - }, - { - "id": "the-scottish-sun", - "provider": "The Scottish Sun", - "endpoint": "https://www.thescottishsun.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "elluminet-press", - "provider": "9to5. Mac", - "endpoint": "https://9to5mac.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 20 after repeated failures", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "faded-spring", - "provider": "Emily Underworld", - "endpoint": "https://emilyunderworld.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "ian-neate-blog", - "provider": "9to5. Mac", - "endpoint": "https://9to5mac.com/feed/?source=ian-neate-blog", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "sks-business-services", - "provider": "SKS Business Services", - "endpoint": "https://www.sksbusinessservices.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "streetspace", - "provider": "Streetspace", - "endpoint": "https://streetspacegroup.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "police-scotland-news", - "provider": "Police Scotland news", - "endpoint": "https://www.scotland.police.uk/what-s-happening/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 23 after repeated failures", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T19:32:35.264Z", - "lastFailureAt": "2026-04-19T19:32:35.264Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "frontex-news-releases", - "provider": "Frontex a News Releases", - "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/", - "kind": "html", - "lane": "border", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "enisa-news", - "provider": "ENISA (EU Cybersecurity Agency) a News", - "endpoint": "https://www.enisa.europa.eu/news", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "enisa-rss-transition-page", - "provider": "ENISA - RSS Feeds Transition Notice", - "endpoint": "https://www.enisa.europa.eu/rss-feeds-discontinued-new-subscription-mechanism-coming-soon", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eurojust-press-news-html", - "provider": "Eurojust - Press Releases and News", - "endpoint": "https://www.eurojust.europa.eu/media-and-events/press-releases-and-news", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "europol-media-press", - "provider": "Europol a Media and Press", - "endpoint": "https://www.europol.europa.eu/media-press", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "europol-newsroom-html", - "provider": "Europol - Newsroom", - "endpoint": "https://www.europol.europa.eu/media-press/newsroom", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "finland-supo-news", - "provider": "Finnish Security Intelligence Service - News", - "endpoint": "https://supo.fi/en/current-issues", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "german-interior-ministry-press", - "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", - "endpoint": "https://www.bmz.de/en/feed.rss", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 20 after repeated failures", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 400", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "paris-prefecture-police-rss-page", - "provider": "Paris Prefecture of Police - RSS", - "endpoint": "https://www.prefecturedepolice.interieur.gouv.fr/presentation/les-directions-et-services/le-cabinet-du-prefet-de-police/service-de-la-communication/abonnez-vous-aux-flux-rss", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "spain-interior-ministry-news", - "provider": "Spanish Ministry of the Interior - Press", - "endpoint": "https://www.interior.gob.es/opencms/en/prensa/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "ertzaintza-news", - "provider": "Ertzaintza - News", - "endpoint": "https://www.ertzaintza.euskadi.eus/lfr/eu/webertzaintza/noticias", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "finland-police-news", - "provider": "Finnish Police - News", - "endpoint": "https://poliisi.fi/en/news", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "paris-prefecture-police-press-releases", - "provider": "Paris Prefecture of Police - Press Releases", - "endpoint": "https://www.prefecturedepolice.interieur.gouv.fr/actualites-et-presse/communiques-de-presse/communiques-de-presse", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "romanian-police-news", - "provider": "Romanian Police - News", - "endpoint": "https://www.politiaromana.ro/en/news", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eu-commission-presscorner-home", - "provider": "Council of the EU - Press Releases (RSS)", - "endpoint": "https://www.consilium.europa.eu/en/rss/pressreleases.ashx?source=eu-commission-presscorner-home", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "eu-council-fight-against-terrorism", - "provider": "Council of the EU - Fight Against Terrorism", - "endpoint": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eu-council-rss-index", - "provider": "Council of the EU - RSS Index", - "endpoint": "https://www.consilium.europa.eu/en/about-site/rss/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eu-ct-coordinator", - "provider": "EU Counter-Terrorism Coordinator a Council of the EU", - "endpoint": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/eu-counter-terrorism-coordinator/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eu-fra-rss", - "provider": "EU Agency for Fundamental Rights (FRA) a RSS", - "endpoint": "https://fra.europa.eu/en/content/rss", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eurojust-rss-feeds-page", - "provider": "Eurojust - RSS Feeds", - "endpoint": "https://www.eurojust.europa.eu/rss-feeds", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "europol-tesat-report", - "provider": "Europol - TESAT Report", - "endpoint": "https://www.europol.europa.eu/publications-events/main-reports/tesat-report", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "fra-rss", - "provider": "Human Rights Watch - News RSS", - "endpoint": "https://www.hrw.org/rss/news", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "europol-eu-iru", - "provider": "Europol a EU Internet Referral Unit (EU IRU)", - "endpoint": "https://www.europol.europa.eu/about-europol/european-counter-terrorism-centre-ectc/eu-internet-referal-unit-eu-iru", - "kind": "html", - "lane": "prevention", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ncsc-nl-rss", - "provider": "NCSC Netherlands - RSS", - "endpoint": "https://feeds.ncsc.nl/nieuws.rss", - "kind": "rss", - "lane": "prevention", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "eu-council-terrorism-sanctions", - "provider": "Council of the EU - Sanctions Against Terrorism", - "endpoint": "https://www.consilium.europa.eu/en/policies/sanctions-against-terrorism/", - "kind": "html", - "lane": "sanctions", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "unhcr-europe-news", - "provider": "UNHCR Europe a News", - "endpoint": "https://www.unhcr.org/europe/news", - "kind": "html", - "lane": "border", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "french-interior-ministry-news", - "provider": "French Ministry of the Interior - News", - "endpoint": "https://www.interieur.gouv.fr/actualites", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "netherlands-nctv-news", - "provider": "Dutch NCTV - News", - "endpoint": "https://www.nctv.nl/actueel", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "french-gendarmerie-news", - "provider": "Gendarmerie Nationale - News", - "endpoint": "https://www.gendarmerie.interieur.gouv.fr/gendarmerie/actualites", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "french-police-nationale-news", - "provider": "Police Nationale - News", - "endpoint": "https://www.police-nationale.interieur.gouv.fr/actualites", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ireland-gardai-press", - "provider": "An Garda Siochana - Press Releases", - "endpoint": "https://www.garda.ie/en/about-us/our-departments/office-of-corporate-communications/press-releases/", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "paris-police-prefecture-news", - "provider": "France24 - France (RSS)", - "endpoint": "https://www.france24.com/en/france/rss", - "kind": "rss", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "portugal-psp-news", - "provider": "The Portugal News - Crime", - "endpoint": "https://www.theportugalnews.com/news/crime", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "coe-counter-terrorism", - "provider": "Council of Europe a Counter-Terrorism", - "endpoint": "https://www.coe.int/en/web/counter-terrorism/news-updates", - "kind": "html", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "netherlands-prosecution-news", - "provider": "Dutch Public Prosecution Service - News", - "endpoint": "https://www.om.nl/actueel/nieuws", - "kind": "html", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "pst-no-english", - "provider": "PST (Norway) English reporting page", - "endpoint": "https://www.pst.no/en/report/", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ran-network", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=ran-network", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "supo-fi-english", - "provider": "SUPO Finland news and press releases", - "endpoint": "https://supo.fi/en/news-and-press-releases", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "iom-news", - "provider": "IOM (International Organization for Migration) a News", - "endpoint": "https://www.iom.int/news", - "kind": "html", - "lane": "border", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "unsc-counter-terrorism-committee", - "provider": "UN Security Council - Counter-Terrorism Committee (CTC) Updates", - "endpoint": "https://www.un.org/securitycouncil/ctc/news", - "kind": "html", - "lane": "oversight", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "fatf-news", - "provider": "Financial Action Task Force (FATF) a News", - "endpoint": "https://www.fatf-gafi.org/en/publications.html", - "kind": "html", - "lane": "sanctions", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "interpol-notices", - "provider": "INTERPOL a Notices", - "endpoint": "https://www.interpol.int/How-we-work/Notices", - "kind": "html", - "lane": "sanctions", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "unsc-1267-press-releases", - "provider": "UN Security Council - ISIL/Da'esh & Al-Qaeda Sanctions Committee Press Releases", - "endpoint": "https://main.un.org/securitycouncil/en/sanctions/1267/press-releases", - "kind": "html", - "lane": "sanctions", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "unsc-consolidated-list", - "provider": "UN Security Council - Consolidated Sanctions List Updates (RSS)", - "endpoint": "https://main.un.org/securitycouncil/en/rss-updates-unsc-consolidated-list", - "kind": "rss", - "lane": "sanctions", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "barnet-council-news", - "provider": "Barnet Post", - "endpoint": "https://barnetpost.co.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "city-of-london-police-fraud-reporting", - "provider": "City of London Police - Fraud Reporting", - "endpoint": "https://www.cityoflondon.police.uk/ro/report/fo/v1/fraud/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cnwl-news", - "provider": "Central and North West London NHS Foundation Trust a News", - "endpoint": "https://www.cnwl.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "east-london-nhs-news", - "provider": "East London NHS Foundation Trust a News", - "endpoint": "https://www.elft.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "enfield-council-news", - "provider": "Enfield Council a News and Events", - "endpoint": "https://www.enfield.gov.uk/news-and-events", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "haringey-council-news", - "provider": "Haringey Community Press", - "endpoint": "https://haringeycommunitypress.co.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "harrow-council-news", - "provider": "Harrow Council a News", - "endpoint": "https://www.harrow.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "heathrow-media-centre", - "provider": "Heathrow a Media Centre", - "endpoint": "https://mediacentre.heathrow.com/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "imperial-healthcare-news", - "provider": "Imperial College Healthcare NHS Trust a News", - "endpoint": "https://www.imperial.nhs.uk/about-us/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "kensington-chelsea-newsroom", - "provider": "Royal Borough of Kensington and Chelsea a Newsroom", - "endpoint": "https://www.rbkc.gov.uk/newsroom", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "lewisham-council-news", - "provider": "Salamander News", - "endpoint": "https://salamandernews.org/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "london-ambulance-news", - "provider": "London Ambulance Service a News", - "endpoint": "https://www.londonambulance.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-city-airport-media-centre", - "provider": "London City Airport a Media Centre", - "endpoint": "https://www.londoncityairport.com/corporate/media-centre", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-councils-news", - "provider": "London Councils a News", - "endpoint": "https://www.londoncouncils.gov.uk/news-and-press-releases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-fire-brigade-news", - "provider": "London Fire Brigade a News", - "endpoint": "https://www.london-fire.gov.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-gov-home", - "provider": "London.gov.uk", - "endpoint": "https://www.london.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-gov-press-releases-html", - "provider": "London.gov.uk - Press Releases", - "endpoint": "https://www.london.gov.uk/press-releases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nhs-london-ncl-news", - "provider": "NHS North Central London a News", - "endpoint": "https://nclhealthandcare.org.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nhs-london-swl-news", - "provider": "NHS South West London a News", - "endpoint": "https://www.southwestlondon.icb.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "north-middlesex-news", - "provider": "North Middlesex University Hospital a News", - "endpoint": "https://www.northmid.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "port-of-london-authority-news", - "provider": "Port of London Authority a News", - "endpoint": "https://pla.co.uk/News", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "royal-free-london-news", - "provider": "Royal Free London NHS Foundation Trust a News", - "endpoint": "https://www.royalfree.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "southwark-newsroom", - "provider": "Southwark Council a Newsroom", - "endpoint": "https://news.southwark.gov.uk/newsroom/news/rss", - "kind": "rss", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "tavistock-portman-news", - "provider": "Tavistock and Portman NHS Foundation Trust a News", - "endpoint": "https://tavistockandportman.nhs.uk/about-us/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "tfl-press-releases", - "provider": "Transport for London - Press Releases", - "endpoint": "https://tfl.gov.uk/info-for/media/press-releases?source=tfl-press-releases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "tfl-press-releases-html", - "provider": "Transport for London - Press Releases", - "endpoint": "https://tfl.gov.uk/info-for/media/press-releases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "city-of-london-police-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=city-of-london-police-news", - "kind": "html", - "lane": "incidents", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "city-of-london-police-news-html", - "provider": "City of London Police - News", - "endpoint": "https://www.cityoflondon.police.uk/news/city-of-london-police/news/", - "kind": "html", - "lane": "incidents", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "city-of-london-police-newsroom", - "provider": "Metropolitan Police Service - News", - "endpoint": "https://news.met.police.uk/", - "kind": "html", - "lane": "incidents", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "ct-policing-london", - "provider": "Counter Terrorism Policing London", - "endpoint": "https://www.counterterrorism.police.uk/counter-terrorism-policing-london/", - "kind": "html", - "lane": "incidents", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "mopac-html", - "provider": "Mayor's Office for Policing and Crime", - "endpoint": "https://www.london.gov.uk/programmes-strategies/mayors-office-policing-and-crime-mopac", - "kind": "html", - "lane": "oversight", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "bbc-news-front-page-legacy", - "provider": "BBC News a Front Page (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/front_page/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T22:12:37.099Z", - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bbc-news-uk", - "provider": "BBC News a UK", - "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T22:12:37.099Z", - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "essex-police-news", - "provider": "Essex Police a News", - "endpoint": "https://www.essex.police.uk/news/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "kent-police-news", - "provider": "Kent Police a News", - "endpoint": "https://www.kent.police.uk/news/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "mi5-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=mi5-news", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "national-crime-agency-news", - "provider": "National Crime Agency a News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "report-fraud-home", - "provider": "Report Fraud", - "endpoint": "https://www.reportfraud.police.uk/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "report-fraud-newsroom", - "provider": "Report Fraud - Newsroom", - "endpoint": "https://www.reportfraud.police.uk/collection/newsroom/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "church-of-england-newspaper", - "provider": "Church of England Newspaper", - "endpoint": "https://www.churchnewspaper.com/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T22:12:37.099Z", - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bedfordshire-police-news", - "provider": "Bedfordshire Police - News", - "endpoint": "https://www.beds.police.uk/news/bedfordshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "bedfordshire-police-news-search", - "provider": "Bedfordshire Police - News Search", - "endpoint": "https://www.beds.police.uk/news/news-search/?ct=News", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "british-transport-police-news", - "provider": "British Transport Police Authority - News Feed", - "endpoint": "https://btpa.police.uk/feed/", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "btp-british-transport-police-news-html", - "provider": "British Transport Police - News", - "endpoint": "https://www.btp.police.uk/news/british-transport-police/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cambridgeshire-police-news-search", - "provider": "Cambridgeshire Police - News Search", - "endpoint": "https://www.cambs.police.uk/news/news-search/?ct=News", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cheshire-police-news", - "provider": "Cheshire Constabulary - News", - "endpoint": "https://www.cheshire.police.uk/news/cheshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cleveland-police-news", - "provider": "Cleveland Police - News", - "endpoint": "https://www.cleveland.police.uk/news/cleveland/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cps-news-centre", - "provider": "Crown Prosecution Service a News Centre", - "endpoint": "https://www.cps.gov.uk/news", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-north-west", - "provider": "Counter Terrorism Policing North West", - "endpoint": "https://www.counterterrorism.police.uk/north-west/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-uk-latest-news", - "provider": "Counter Terrorism Policing UK a Latest News", - "endpoint": "https://www.counterterrorism.police.uk/latest-news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-uk-rss-feed", - "provider": "Counter Terrorism Policing UK - Latest News", - "endpoint": "https://www.counterterrorism.police.uk/latest-news/?source=ct-policing-uk-rss-feed", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "cumbria-police-news", - "provider": "Cumbria Police - News", - "endpoint": "https://www.cumbria.police.uk/news/cumbria/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cumbria-police-newsroom", - "provider": "Cumbria Police - Newsroom", - "endpoint": "https://www.news.cumbria.police.uk/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "derbyshire-police-news", - "provider": "Derbyshire Police - News", - "endpoint": "https://www.derbyshire.police.uk/news/derbyshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "devon-and-cornwall-police-newsroom", - "provider": "Devon and Cornwall Police - Newsroom", - "endpoint": "https://news.devon-cornwall.police.uk/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "devon-cornwall-police-news", - "provider": "Devon and Cornwall Police - News", - "endpoint": "https://www.devon-cornwall.police.uk/news/devon-cornwall/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "dorset-police-news", - "provider": "Dorset Police - News", - "endpoint": "https://www.dorset.police.uk/news/dorset/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "dorset-police-newsroom", - "provider": "Dorset Police - Newsroom", - "endpoint": "https://news.dorset.police.uk/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "durham-constabulary-news", - "provider": "Durham Constabulary a News", - "endpoint": "https://www.durham.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "durham-police-durham-news", - "provider": "Durham Police - Durham News", - "endpoint": "https://www.durham.police.uk/news/durham/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "dyfed-powys-police-news", - "provider": "Dyfed-Powys Police - News", - "endpoint": "https://www.dyfed-powys.police.uk/news/dyfed-powys/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "essex-police-news-html", - "provider": "Essex Police - News", - "endpoint": "https://www.essex.police.uk/news/essex/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gloucestershire-police-news", - "provider": "Gloucestershire Police - News", - "endpoint": "https://www.gloucestershire.police.uk/news/gloucestershire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gmp-news", - "provider": "Greater Manchester Police a News", - "endpoint": "https://www.gmp.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "greater-manchester-police-news", - "provider": "Greater Manchester Police - News", - "endpoint": "https://www.gmp.police.uk/news/greater-manchester/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gwent-police-news", - "provider": "Gwent Police - News", - "endpoint": "https://www.gwent.police.uk/news/gwent/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "hampshire-police-news", - "provider": "Hampshire & Isle of Wight Constabulary a News", - "endpoint": "https://www.hampshire.police.uk/news/hampshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "hertfordshire-police-news", - "provider": "Hertfordshire Constabulary a News", - "endpoint": "https://www.herts.police.uk/news/hertfordshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "humberside-police-news-search", - "provider": "Humberside Police - News Search", - "endpoint": "https://www.humberside.police.uk/news/news-search/?ct=News", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "kent-police-news-html", - "provider": "Kent Police - News", - "endpoint": "https://www.kent.police.uk/news/kent/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "lancashire-constabulary-news", - "provider": "Lancashire Constabulary a News", - "endpoint": "https://www.lancashire.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "leicestershire-police-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=leicestershire-police-news", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "lincolnshire-police-news", - "provider": "Lincolnshire Police - News", - "endpoint": "https://www.lincs.police.uk/news/lincolnshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "merseyside-police-news", - "provider": "Merseyside Police a News", - "endpoint": "https://www.merseyside.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "merseyside-police-news-html", - "provider": "Merseyside Police - News", - "endpoint": "https://www.merseyside.police.uk/news/merseyside-police/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "norfolk-constabulary-news", - "provider": "Norfolk Constabulary - News", - "endpoint": "https://www.norfolk.police.uk/news/norfolk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "north-wales-police-news", - "provider": "North Wales Police - News", - "endpoint": "https://www.northwales.police.uk/news/north-wales/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "north-yorkshire-police-news-html", - "provider": "North Yorkshire Police - News", - "endpoint": "https://www.northyorkshire.police.uk/news/north-yorkshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "northamptonshire-police-news-html", - "provider": "Northamptonshire Police - News", - "endpoint": "https://www.northants.police.uk/news/northants/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "northumbria-police-news", - "provider": "North East Bylines", - "endpoint": "https://northeastbylines.co.uk/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "northumbria-police-northumbria-news", - "provider": "Northumbria Police - Northumbria News", - "endpoint": "https://www.northumbria.police.uk/news/northumbria/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nottinghamshire-police-news", - "provider": "Nottinghamshire Police a News", - "endpoint": "https://www.nottinghamshire.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nottinghamshire-police-nottinghamshire-news", - "provider": "Nottinghamshire Police - Nottinghamshire News", - "endpoint": "https://www.nottinghamshire.police.uk/news/nottinghamshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "psni-news", - "provider": "Police Service of Northern Ireland a News", - "endpoint": "https://www.psni.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "south-wales-police-news", - "provider": "South Wales Police - News", - "endpoint": "https://www.south-wales.police.uk/news/south-wales/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "south-yorkshire-police-news", - "provider": "South Yorkshire Police a News", - "endpoint": "https://www.southyorkshire.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "staffordshire-police-news", - "provider": "Staffordshire Police a News", - "endpoint": "https://www.staffordshire.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "staffordshire-police-staffordshire-news", - "provider": "Staffordshire Police - Staffordshire News", - "endpoint": "https://www.staffordshire.police.uk/news/staffordshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "suffolk-constabulary-news", - "provider": "Suffolk Constabulary - News", - "endpoint": "https://www.suffolk.police.uk/news/suffolk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "surrey-police-news", - "provider": "Surrey Police a News", - "endpoint": "https://www.surrey.police.uk/news/surrey/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "sussex-police-news", - "provider": "Sussex Police a News", - "endpoint": "https://www.sussex.police.uk/news/sussex/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "thames-valley-police-news", - "provider": "Thames Valley Police a News", - "endpoint": "https://www.thamesvalley.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "thames-valley-police-news-html", - "provider": "Thames Valley Police - Thames Valley News", - "endpoint": "https://www.thamesvalley.police.uk/news/thames-valley/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "warwickshire-police-news", - "provider": "Warwickshire Connected - Latest Alerts", - "endpoint": "https://www.warwickshireconnected.com/Content/Pages/Latest-Alerts", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "west-mercia-police-news-html", - "provider": "West Mercia Police - News", - "endpoint": "https://www.westmercia.police.uk/news/west-mercia/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "west-midlands-police-news", - "provider": "West Midlands Police a News", - "endpoint": "https://www.westmidlands.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "west-yorkshire-police-missing-rss", - "provider": "West Yorkshire Police - Missing Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/missing/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "wiltshire-police-news", - "provider": "Wiltshire Police - News", - "endpoint": "https://www.wiltshire.police.uk/news/wiltshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cps-homepage", - "provider": "Crown Prosecution Service", - "endpoint": "https://www.cps.gov.uk/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gov-uk-hmic", - "provider": "HM Inspectorate of Constabulary a GOV.UK", - "endpoint": "https://hmicfrs.justiceinspectorates.gov.uk/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gov-uk-parliament-jcnss", - "provider": "UK Parliament a Joint Committee on National Security Strategy", - "endpoint": "https://committees.parliament.uk/committee/54/joint-committee-on-the-national-security-strategy/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "lords-in-focus-rss", - "provider": "Hansard Society - Despatch Box", - "endpoint": "https://www.hansardsociety.org.uk/blog", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "lords-library-notes-rss", - "provider": "Hansard Society - Despatch Box", - "endpoint": "https://www.hansardsociety.org.uk/blog?source=lords-library-notes-rss", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "police-ombudsman-current-investigations", - "provider": "Police Ombudsman - Current Investigations", - "endpoint": "https://www.policeombudsman.org/investigation-reports/current-investigations", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "police-uk-outcomes-at-location-1609590", - "provider": "Police Data UK - Outcomes At Location API Docs", - "endpoint": "https://data.police.uk/docs/method/outcomes-at-location/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "uk-parliament-business-news", - "provider": "UK Parliament - Business News", - "endpoint": "https://www.parliament.uk/business/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-parliament-foreign-affairs-committee", - "provider": "UK Parliament a Foreign Affairs Select Committee", - "endpoint": "https://committees.parliament.uk/committee/78/foreign-affairs-committee/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-parliament-justice-committee", - "provider": "UK Parliament a Justice Select Committee", - "endpoint": "https://committees.parliament.uk/committee/102/justice-committee/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-prevent-programme", - "provider": "Counter Terrorism Policing - Prevent", - "endpoint": "https://www.counterterrorism.police.uk/what-we-do/counter-terrorism/prevent/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-what-you-can-do", - "provider": "Counter Terrorism Policing - What You Can Do", - "endpoint": "https://www.counterterrorism.police.uk/what-you-can-do/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gov-uk-report-terrorism", - "provider": "GOV.UK - Report Terrorism", - "endpoint": "https://www.gov.uk/report-terrorism", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gov-uk-terrorism-national-emergency", - "provider": "GOV.UK - Terrorism National Emergency", - "endpoint": "https://www.gov.uk/terrorism-national-emergency", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "mi5-terrorism-threat-levels", - "provider": "MI5 - Terrorism Threat Levels", - "endpoint": "https://www.mi5.gov.uk/threats-and-advice/terrorism-threat-levels", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "northamptonshire-talking", - "provider": "Northamptonshire Talking", - "endpoint": "https://www.northamptonshiretalking.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "npsa-blog", - "provider": "NPSA - Blog", - "endpoint": "https://www.npsa.gov.uk/blog", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "npsa-blog-news", - "provider": "NPSA - Blog News", - "endpoint": "https://www.npsa.gov.uk/blog/news", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "protectuk", - "provider": "ProtectUK (NPSA) a Protective Security Guidance", - "endpoint": "https://www.protectuk.police.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-ncsc-homepage", - "provider": "UK NCSC - Homepage", - "endpoint": "https://www.ncsc.gov.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-sanctions-list", - "provider": "UK Sanctions List (FCDO) a Consolidated List (XML Service)", - "endpoint": "https://sanctionslist.fcdo.gov.uk/docs/UK-Sanctions-List.xml", - "kind": "html", - "lane": "sanctions", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "fbi-national-press-releases", - "provider": "FBI - National Press Releases (RSS)", - "endpoint": "https://www.fbi.gov/feeds/national-press-releases/RSS", - "kind": "rss", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "fbi-stories", - "provider": "FBI - Top Stories (RSS)", - "endpoint": "https://www.fbi.gov/feeds/fbi-top-stories/rss.xml", - "kind": "rss", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "fbi-top-stories", - "provider": "FBI - Top Stories (RSS)", - "endpoint": "https://www.fbi.gov/feeds/fbi-top-stories/rss.xml?source=fbi-top-stories", - "kind": "rss", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "us-house-homeland-security", - "provider": "US House Committee on Homeland Security - News", - "endpoint": "https://homeland.house.gov/news/", - "kind": "html", - "lane": "oversight", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "belgium-crisis-centre-news", - "provider": "Belgian National Crisis Centre - Newsroom", - "endpoint": "https://crisiscenter.be/en/newsroom", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 5 after repeated failures", - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "german-bka-press", - "provider": "German BKA - Press Releases (2026 archive)", - "endpoint": "https://www.bka.de/DE/Presse/Listenseite_Pressemitteilungen/2026/2026_node.html", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 5 after repeated failures", - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "policia-nacional-news", - "provider": "Policia Nacional - Press", - "endpoint": "https://www.policia.es/_es/comunicacion_salaprensa.php", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 5 after repeated failures", - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-19T18:05:04.781Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T18:05:04.781Z", - "lastFailureAt": "2026-04-19T18:05:04.781Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "bfv-de-english", - "provider": "BfV service page (Federal Office for the Protection of the Constitution)", - "endpoint": "https://www.verfassungsschutz.de/EN/service/service_node.html", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T11:07:28.674Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T11:07:28.674Z", - "lastFailureAt": "2026-04-17T11:07:28.674Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "german-bka-press-releases-de", - "provider": "BKA Germany - Press Releases", - "endpoint": "https://www.bka.de/DE/Aktuelle. Informationen/Aktuelle. Meldungen/Pressemeldungen/pressemitteilungen_node.html", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Infrastructure instability — mixed timeout and network errors; auto-retry likely to recover", - "quarantinedAt": "2026-04-17T08:04:04.612Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T07:32:24.475Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T17:39:27.641Z", - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastCheckedAt": "2026-04-22T17:39:27.641Z" - }, - { - "id": "surgezirc-uk", - "provider": "Surge. Zirc UK", - "endpoint": "https://surgezirc.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T08:04:04.612Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T14:11:10.963Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T11:47:27.254Z", - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastCheckedAt": "2026-04-23T11:47:27.254Z" - }, - { - "id": "arcticdry", - "provider": "Arctic. Dry", - "endpoint": "https://www.arcticdry.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T08:04:04.612Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T08:04:04.612Z", - "lastFailureAt": "2026-04-17T08:04:04.612Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "police-uk-all-crime-leicester", - "provider": "Police.uk - Street Crime Around Leicester", - "endpoint": "https://data.police.uk/api/crimes-street/all-crime?lat=52.629729&lng=-1.131592", - "kind": "json", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-23T23:55:39.351Z", - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "daily-mail-online", - "provider": "Daily Mail Online - Popular Stories", - "endpoint": "https://www.dailymail.co.uk/home/index.rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-23T23:55:39.351Z", - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "counter-extremism-project-news", - "provider": "Counter Extremism Project a News", - "endpoint": "https://www.counterextremism.com/news-and-media", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T12:14:24.733Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "rusi-terrorism-conflict", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T12:14:24.733Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T12:14:24.733Z", - "lastFailureAt": "2026-04-20T12:14:24.733Z", - "lastCheckedAt": "2026-04-24T03:29:13.488Z" - }, - { - "id": "gov-uk-counter-extremism-commissioner", - "provider": "Counter Extremism Commissioner a GOV.UK", - "endpoint": "https://www.govwire.co.uk/rss/commission-for-countering-extremism", - "kind": "rss", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-23T19:01:30.233Z", - "lastFailureAt": "2026-04-16T19:01:30.233Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "denmark-pet-news", - "provider": "Danish Security and Intelligence Service - News", - "endpoint": "https://pet.dk/aktuelt/nyhedsliste", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "german-bfv-news", - "provider": "German BfV - Press", - "endpoint": "https://www.verfassungsschutz.de/EN/service/press/press_node.html", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nctv-english-rss", - "provider": "NCTV Netherlands - English RSS", - "endpoint": "https://english.nctv.nl/latest/news", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "belgian-federal-police-news", - "provider": "Belgian Federal Police - News", - "endpoint": "https://www.police.be/5998/en/node/10868", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T11:47:27.254Z", - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastCheckedAt": "2026-04-23T11:47:27.254Z" - }, - { - "id": "czech-police-news", - "provider": "Police of the Czech Republic - News", - "endpoint": "https://policie.gov.cz/clanek/Police-of-the-Czech-Republic.aspx", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "guardia-civil-news", - "provider": "El Pais English - Guardia Civil", - "endpoint": "https://english.elpais.com/news/guardia-civil/", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "switzerland-fedpol-news", - "provider": "Swiss fedpol - News", - "endpoint": "https://www.fedpol.admin.ch/en/newnsb", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T21:59:30.032Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T21:59:30.032Z", - "lastFailureAt": "2026-04-22T21:59:30.032Z", - "lastCheckedAt": "2026-04-22T21:59:30.032Z" - }, - { - "id": "pet-dk-english", - "provider": "PET (Denmark) a English News", - "endpoint": "https://pet.dk/en/news-and-publications/news-list", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nato-news-rss", - "provider": "NATO a News (RSS)", - "endpoint": "https://www.nato.int/en/news-and-events/articles/news", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "occrp-news", - "provider": "OCCRP a Organized Crime and Corruption Reporting Project", - "endpoint": "https://www.occrp.org/en/announcements", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "rferl-security-news-rss", - "provider": "Radio Free Europe/Radio Liberty a Security (RSS)", - "endpoint": "https://www.rferl.org/latest-news", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T08:39:19.161Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastCheckedAt": "2026-04-23T22:53:56.180Z" - }, - { - "id": "unodc-news", - "provider": "UNODC (UN Office on Drugs and Crime) a Press Releases", - "endpoint": "https://www.unodc.org/unodc/en/news/news.html", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gctf-news", - "provider": "Global Counterterrorism Forum (GCTF) a News", - "endpoint": "https://www.thegctf.org/News-Stories/PgrID/918/PageID/3", - "kind": "html", - "lane": "oversight", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "barts-health-news", - "provider": "Barts Health NHS Trust a News", - "endpoint": "https://www.bartshealth.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T08:09:12.931Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T08:09:12.931Z", - "lastFailureAt": "2026-04-23T08:09:12.931Z", - "lastCheckedAt": "2026-04-23T08:09:12.931Z" - }, - { - "id": "bromley-council-news", - "provider": "Bromley Council a Newsroom", - "endpoint": "https://www.bromley.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "homerton-healthcare-news", - "provider": "Homerton Healthcare NHS Foundation Trust a News", - "endpoint": "https://www.homerton.nhs.uk/trust-news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "mayor-of-london-press-releases", - "provider": "Mayor of London a Press Releases", - "endpoint": "https://www.london.gov.uk/rss-feeds/80610", - "kind": "rss", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "nhs-london-sel-news", - "provider": "NHS South East London a News", - "endpoint": "https://www.selondonics.org/icb/about-us/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "slam-news", - "provider": "South London and Maudsley NHS Foundation Trust a News", - "endpoint": "https://slam.nhs.uk/pressreleases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "tower-hamlets-council-news", - "provider": "Tower Hamlets Council a News", - "endpoint": "https://www.towerhamlets.gov.uk/News_events/News.aspx", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "westminster-city-council-news", - "provider": "Westminster City Council a News", - "endpoint": "https://www.westminster.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "whittington-health-news", - "provider": "Whittington Health a News", - "endpoint": "https://www.whittington.nhs.uk/mini-apps/news/news. Items.asp", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-assembly-press-releases", - "provider": "London Assembly a Press Releases", - "endpoint": "https://www.london.gov.uk/rss-feeds/80611", - "kind": "rss", - "lane": "oversight", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-defence-intelligence", - "provider": "UK Defence Intelligence a GOV.UK", - "endpoint": "https://www.gov.uk/government/groups/defence-intelligence", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "mi5-news-rss-direct", - "provider": "MI5 - News RSS", - "endpoint": "https://www.mi5.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "daily-politics", - "provider": "Daily Politics", - "endpoint": "https://www.dailypolitics.com/categories/r. RzjN-bU/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T08:39:19.161Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastCheckedAt": "2026-04-23T22:53:56.180Z" - }, - { - "id": "joint-committee-human-rights-html", - "provider": "Joint Committee on Human Rights", - "endpoint": "https://committees.parliament.uk/committee/93/human-rights-joint-committee/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T19:31:23.009Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T19:31:23.009Z", - "lastFailureAt": "2026-04-23T19:31:23.009Z", - "lastCheckedAt": "2026-04-23T19:31:23.009Z" - }, - { - "id": "scottish-government-justice-news", - "provider": "Scottish Government - Justice and Safety", - "endpoint": "https://www.gov.scot/policies/community-safety/latest/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dni-press-releases", - "provider": "Office of the Director of National Intelligence - Press Releases", - "endpoint": "https://www.dni.gov/index.php/who-we-are/348-newsroom/press-releases", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "doj-nsd-press-releases", - "provider": "U.S. Department of Justice - National Security Division Press Releases", - "endpoint": "https://www.justice.gov/nsd/press-room", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "us-treasury-ofac-press-releases", - "provider": "U.S. Treasury (OFAC) - Press Releases", - "endpoint": "https://ofac.treasury.gov/press-releases", - "kind": "html", - "lane": "sanctions", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-23T15:11:26.228Z", - "lastFailureAt": "2026-04-16T15:11:26.228Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "bbc-news-england-legacy", - "provider": "BBC News a England (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/england/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 3, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "aljazeera-news-rss", - "provider": "Al Jazeera English a Top Stories (RSS)", - "endpoint": "https://www.aljazeera.com/xml/rss/all.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 3, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "rte-ireland-news-rss", - "provider": "RTE News - Ireland (RSS)", - "endpoint": "https://feeds.feedburner.com/ietopstories", - "kind": "rss", - "lane": "context", - "region": "europe", - "healthScore": 5, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T08:39:19.161Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "channel-4-news", - "provider": "Channel 4 News", - "endpoint": "https://www.channel4.com/news/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 10, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T00:08:15.005Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T03:57:52.244Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "england-naturally", - "provider": "England, Naturally", - "endpoint": "https://englandnaturally.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 11, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-23T03:28:47.210Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "love-my-dress", - "provider": "Love My Dress", - "endpoint": "https://www.lovemydress.net/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 11, - "status": "auto-quarantined", - "reason": "Health score degraded to 14 after repeated failures", - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 520", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "the-week-uk", - "provider": "The Week UK", - "endpoint": "https://www.theweek.co.uk/feeds/all", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 13, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T08:39:19.161Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "euiss-home", - "provider": "EU Institute for Security Studies", - "endpoint": "https://www.iss.europa.eu/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "icct-home", - "provider": "ICCT - Home", - "endpoint": "https://icct.nl/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "breakingnews-ie", - "provider": "Breaking. News.ie", - "endpoint": "https://feeds.breakingnews.ie/bntopstories", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "independent-ie", - "provider": "Independent.ie", - "endpoint": "https://www.independent.ie/rss/", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "eucrim-counter-terrorism-agenda", - "provider": "eucrim - Commission Counter Terrorism Agenda", - "endpoint": "https://eucrim.eu/news/commission-counter-terrorism-agenda/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "eucrim-judicial-counter-terrorism-register", - "provider": "eucrim - Judicial Counter Terrorism Register", - "endpoint": "https://eucrim.eu/news/judicial-counter-terrorism-register/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "icct-perspectives-on-terrorism", - "provider": "Perspectives on Terrorism (ICCT) a Journal", - "endpoint": "https://pt.icct.nl/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "icct-publications", - "provider": "International Centre for Counter-Terrorism (ICCT) - Publications", - "endpoint": "https://icct.nl/publications", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "vox-pol-publications", - "provider": "VOX-Pol Network a Publications", - "endpoint": "https://www.voxpol.eu/publications/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "isd-global", - "provider": "Institute for Strategic Dialogue (ISD) a Articles & Reports", - "endpoint": "https://www.isdglobal.org/", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bbc-news-world", - "provider": "BBC News a World", - "endpoint": "https://feeds.bbci.co.uk/news/world/rss.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bbc-news-world-legacy", - "provider": "BBC News a World (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/world/rss.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bellingcat", - "provider": "Bellingcat a Investigations", - "endpoint": "https://www.bellingcat.com/feed/", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "chathamhouse-events", - "provider": "Chatham House a Events (RSS)", - "endpoint": "https://www.chathamhouse.org/path/events.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "chathamhouse-news-releases", - "provider": "Chatham House a News Releases (RSS)", - "endpoint": "https://www.chathamhouse.org/path/news-releases.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "global-initiative-news", - "provider": "Global Initiative Against Transnational Organized Crime a News", - "endpoint": "https://globalinitiative.net/news/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "tech-against-terrorism-podcast", - "provider": "Tech Against Terrorism - Podcast", - "endpoint": "https://podcast.techagainstterrorism.org/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "war-on-the-rocks", - "provider": "War on the Rocks a National Security & CT Analysis", - "endpoint": "https://warontherocks.com/feed/", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "tech-against-terrorism", - "provider": "Tech Against Terrorism a Blog", - "endpoint": "https://techagainstterrorism.org/", - "kind": "html", - "lane": "prevention", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "tech-against-terrorism-home", - "provider": "Tech Against Terrorism - Home", - "endpoint": "https://techagainstterrorism.org/home", - "kind": "html", - "lane": "prevention", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "hope-not-hate-home", - "provider": "Hope not hate podcast", - "endpoint": "https://feeds.buzzsprout.com/170425.rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "rusi-publications", - "provider": "RUSI (Royal United Services Institute) a Publications", - "endpoint": "https://www.rusi.org/publications", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "birmingham-mail", - "provider": "Birmingham Mail", - "endpoint": "https://www.birminghammail.co.uk/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "breaking-news-today", - "provider": "Breaking News Today", - "endpoint": "https://www.breakingnewstoday.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "consett-magazine", - "provider": "Consett Magazine", - "endpoint": "https://consettmagazine.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "daily-echo", - "provider": "Daily Echo", - "endpoint": "https://www.dailyecho.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "daily-express", - "provider": "Daily Express", - "endpoint": "https://feeds.feedburner.com/daily-express-news-showbiz", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "daily-mirror", - "provider": "Daily Mirror", - "endpoint": "https://www.mirror.co.uk/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "glasgow-times", - "provider": "Glasgow Times", - "endpoint": "https://www.glasgowtimes.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "grimsby-telegraph", - "provider": "Grimsby Telegraph", - "endpoint": "https://www.grimsbytelegraph.co.uk/news/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "herald-scotland-news", - "provider": "Herald Scotland - News", - "endpoint": "https://www.heraldscotland.com/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "huffpost-uk", - "provider": "Huff. Post UK", - "endpoint": "https://www.huffingtonpost.co.uk/feeds/index.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "larne-times", - "provider": "Larne Times", - "endpoint": "https://www.larnetimes.co.uk/news/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "manchester-evening-news", - "provider": "Manchester Evening News", - "endpoint": "https://www.manchestereveningnews.co.uk/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "news-uk", - "provider": "News UK", - "endpoint": "https://www.news.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "politics-co-uk", - "provider": "Politics.co.uk", - "endpoint": "https://www.politics.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "positive-news", - "provider": "Positive News", - "endpoint": "https://www.positive.news/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "scottish-field", - "provider": "Scottish Field", - "endpoint": "https://www.scottishfield.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-argus-news", - "provider": "The Argus", - "endpoint": "https://www.theargus.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-bolton-news", - "provider": "The Bolton News - News", - "endpoint": "https://www.theboltonnews.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "daily-record", - "provider": "Daily Record", - "endpoint": "https://www.dailyrecord.co.uk/news/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "northern-echo-news", - "provider": "The Northern Echo - News", - "endpoint": "https://www.thenorthernecho.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-poke", - "provider": "The Poke", - "endpoint": "https://www.thepoke.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "scarborough-news", - "provider": "The Scarborough News", - "endpoint": "https://www.thescarboroughnews.co.uk/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-scotsman-news", - "provider": "The Scotsman - News", - "endpoint": "https://www.scotsman.com/news/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-york-press-news", - "provider": "The York Press - News", - "endpoint": "https://www.yorkpress.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "wales-online", - "provider": "Wales. Online", - "endpoint": "https://www.walesonline.co.uk/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "a-luxury-travel-blog", - "provider": "A Luxury Travel Blog", - "endpoint": "https://www.aluxurytravelblog.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "age-uk-discover", - "provider": "Age UK", - "endpoint": "https://www.ageuk.org.uk/discover/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "alan-malcher", - "provider": "Alan Malcher", - "endpoint": "https://alanmalcher.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "britishbeautyblogger", - "provider": "British Beauty Blogger", - "endpoint": "https://britishbeautyblogger.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "buy-firewood-direct", - "provider": "Buy Firewood Direct", - "endpoint": "https://www.buyfirewooddirect.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "carly-rowena", - "provider": "Carly Rowena", - "endpoint": "https://feeds.feedburner.com/Carly. Rowena. Official", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "cherished-holiday-homes", - "provider": "Cherished Holiday Homes", - "endpoint": "https://cherishedholidayhomes.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "chique-home-living", - "provider": "Chique Home Living", - "endpoint": "https://chiquehomeliving.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "clubwise-blog", - "provider": "Club. Wise Blog", - "endpoint": "https://www.clubwise.com/clubwise-blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "disneyrollergirl", - "provider": "Disneyrollergirl", - "endpoint": "https://www.disneyrollergirl.net/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "fresh-design-blog", - "provider": "Fresh Design Blog", - "endpoint": "https://feeds2.feedburner.com/Fresh. Design. Blog", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "jollydeck", - "provider": "Jolly. Deck", - "endpoint": "https://www.jollydeck.com/resources/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "lifestylelinked", - "provider": "Life. Style. Linked", - "endpoint": "https://lifestylelinked.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "london-review-of-books", - "provider": "London Review of Books", - "endpoint": "https://www.lrb.co.uk/blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "marie-claire-uk", - "provider": "Marie Claire UK", - "endpoint": "https://www.marieclaire.co.uk/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "office-breaks", - "provider": "Office Breaks", - "endpoint": "https://office-breaks.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "on-the-think-of", - "provider": "On The Think Of", - "endpoint": "https://onthethinkof.home.blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "rocknroll-bride", - "provider": "Rock n Roll Bride", - "endpoint": "https://www.rocknrollbride.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "silverspoon-london", - "provider": "Silver. Spoon London", - "endpoint": "https://www.silverspoonlondon.co.uk/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "hnd-assignment-help-uk-medium", - "provider": "Stories by HND Assignment Help UK", - "endpoint": "https://medium.com/feed/@hndassigenmenthelp", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "tenura", - "provider": "Tenura", - "endpoint": "https://www.tenura.co.uk/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-curry-guy", - "provider": "The Curry Guy", - "endpoint": "https://greatcurryrecipes.net/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "real-talk-uk", - "provider": "The Real Talk UK", - "endpoint": "https://charleyjai-realtalk.blogspot.com/feeds/posts/default?alt=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-stratfordian", - "provider": "The Stratfordian", - "endpoint": "https://thestratfordian.co.uk/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "training-express", - "provider": "Training Express", - "endpoint": "https://www.trainingexpress.org.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "uk-constitutional-law-association", - "provider": "UK Constitutional Law Association", - "endpoint": "https://ukconstitutionallaw.org/blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "uk-fundraising-blog", - "provider": "UK Fundraising", - "endpoint": "https://fundraising.co.uk/category/blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "uk-human-rights-blog", - "provider": "UK Human Rights Blog", - "endpoint": "https://ukhumanrightsblog.com/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "vershd", - "provider": "Vershd", - "endpoint": "https://vershd.io/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "vuelio-uk", - "provider": "Vuelio", - "endpoint": "https://www.vuelio.com/uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "ctc-sentinel", - "provider": "Combating Terrorism Center at West Point - CTC Sentinel", - "endpoint": "https://ctc.westpoint.edu/ctc-sentinel/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "gw-program-extremism", - "provider": "George Washington University - Program on Extremism", - "endpoint": "https://extremism.gwu.edu/news", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "telegraph-world-news", - "provider": "The Telegraph a World News", - "endpoint": "https://www.telegraph.co.uk/world-news/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 23, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T14:11:10.963Z", - "lastFailureAt": "2026-04-19T14:11:10.963Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "euronews-europe", - "provider": "Euronews a Europe", - "endpoint": "https://www.euronews.com/news/europe", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 24, - "status": "auto-quarantined", - "reason": "Health score degraded to 24 after repeated failures", - "quarantinedAt": "2026-04-23T03:28:47.210Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 406", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 406", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - } - ] + "sources": [] } diff --git a/data/source-remediation-sweep.json b/data/source-remediation-sweep.json index d408b774..88379ce1 100644 --- a/data/source-remediation-sweep.json +++ b/data/source-remediation-sweep.json @@ -1,120 +1,11 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T08:17:25.806Z", - "totalSourceErrors": 3, - "byCategory": { - "moved-temporarily": 2, - "timeout": 1 - }, - "byKind": { - "html": 3 - }, + "generatedAt": "2026-04-24T11:19:00.278Z", + "totalSourceErrors": 0, + "byCategory": {}, + "byKind": {}, "machineReadableErrorCount": 0, - "htmlErrorCount": 3, - "top20": [ - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "finalUrl": "", - "category": "timeout", - "statusKind": "", - "message": "This operation was aborted", - "status": 0, - "rankScore": 1, - "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", - "replacementCandidate": "", - "sourceKind": "html", - "sourceLane": "oversight", - "sourceRegion": "", - "isMachineReadable": false - } - ], - "sources": [ - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "finalUrl": "", - "category": "timeout", - "statusKind": "", - "message": "This operation was aborted", - "status": 0, - "rankScore": 1, - "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", - "replacementCandidate": "", - "sourceKind": "html", - "sourceLane": "oversight", - "sourceRegion": "", - "isMachineReadable": false - } - ] + "htmlErrorCount": 0, + "top20": [], + "sources": [] } diff --git a/data/top-20-source-remediation.json b/data/top-20-source-remediation.json index 7358ed1a..485dd97d 100644 --- a/data/top-20-source-remediation.json +++ b/data/top-20-source-remediation.json @@ -1,58 +1,6 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T08:17:25.806Z", - "totalSourceErrors": 3, - "top20": [ - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "finalUrl": "", - "category": "timeout", - "statusKind": "", - "message": "This operation was aborted", - "status": 0, - "rankScore": 1, - "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", - "replacementCandidate": "", - "sourceKind": "html", - "sourceLane": "oversight", - "sourceRegion": "", - "isMachineReadable": false - } - ] + "generatedAt": "2026-04-24T11:19:00.278Z", + "totalSourceErrors": 0, + "top20": [] } diff --git a/live-alerts.json b/live-alerts.json index d9e74c19..d8125feb 100644 --- a/live-alerts.json +++ b/live-alerts.json @@ -1,7 +1,7 @@ { - "generatedAt": "2026-04-24T08:17:25.806Z", - "sourceCount": 176, - "alertCount": 179, + "generatedAt": "2026-04-24T11:19:00.278Z", + "sourceCount": 4, + "alertCount": 181, "alerts": [ { "id": "met-police-latest-news-0", @@ -10245,6 +10245,56 @@ "corroborationCount": 1, "isDuplicateOf": "fusion-f289bcaeba8fd554" }, + { + "id": "fixture-atom-oversight-0", + "fusedIncidentId": "fusion-b4a9eb5890206d91", + "title": "Oversight Committee Schedules Counter-Terror Review Hearing", + "location": "Europe", + "region": "europe", + "lane": "oversight", + "severity": "moderate", + "status": "Update", + "actor": "Fixture Oversight Feed", + "subject": "Fixture Oversight Feed", + "happenedWhen": "04 Apr 2026, 11:10", + "confidence": "Verified official source update", + "confidenceScore": 0.84, + "summary": "Parliamentary committee confirms an oversight hearing on prevention strategy.", + "aiSummary": "Fixture Oversight Feed has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", + "sourceExtract": "Parliamentary committee confirms an oversight hearing on prevention strategy.", + "peopleInvolved": [], + "source": "Fixture Oversight Feed", + "sourceUrl": "https://fixtures.albertalert.local/oversight/1", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "incidentTrack": "", + "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueBucket": "oversight", + "time": "04 Apr 2026, 11:10", + "lat": 50, + "lng": 10, + "major": false, + "publishedAt": "2026-04-04T10:10:00.000Z", + "keywordHits": [ + "terror" + ], + "terrorismHits": [ + "terror", + "counter-terror" + ], + "eventType": "oversight_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": -5.8, + "freshnessBucket": 0, + "freshUntil": "2026-04-12T10:10:00.000Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null + }, { "id": "uk-ncsc-news-4", "fusedIncidentId": "fusion-a4c8d412564d7890", @@ -10526,40 +10576,54 @@ ], "corroborationCount": 1, "isDuplicateOf": "fusion-a705408939c4c725" + }, + { + "id": "fixture-json-prevention-0", + "fusedIncidentId": "fusion-f5cb7bfa16235fcf", + "title": "Community Prevention Workshop Expanded Across Regions", + "location": "Europe", + "region": "international", + "lane": "prevention", + "severity": "moderate", + "status": "Update", + "actor": "Fixture Prevention Feed", + "subject": "Fixture Prevention Feed", + "happenedWhen": "04 Apr 2026, 10:30", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "Prevention specialists announced a new training cycle focused on reporting suspicious behavior.", + "aiSummary": "Fixture Prevention Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "Prevention specialists announced a new training cycle focused on reporting suspicious behavior.", + "peopleInvolved": [], + "source": "Fixture Prevention Feed", + "sourceUrl": "https://fixtures.albertalert.local/prevention/1", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "incidentTrack": "", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "queueBucket": "prevention", + "time": "04 Apr 2026, 10:30", + "lat": 50, + "lng": 10, + "major": false, + "publishedAt": "2026-04-04T09:30:00.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "prevention_update", + "geoPrecision": "country", + "isOfficial": false, + "priorityScore": -8.3, + "freshnessBucket": 0, + "freshUntil": "2026-04-12T09:30:00.000Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null } ], - "sourceErrors": [ - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "status": 503, - "message": "HTTP 503", - "errorCode": "HTTP_STATUS_ERROR", - "category": "http-status-error" - }, - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "status": 503, - "message": "HTTP 503", - "errorCode": "HTTP_STATUS_ERROR", - "category": "http-status-error" - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "finalUrl": "", - "status": null, - "message": "This operation was aborted", - "errorCode": "FETCH_TIMEOUT", - "category": "timeout" - } - ], + "sourceErrors": [], "restoreAudit": null, "geoLookupSnapshot": [ { @@ -12403,87 +12467,44 @@ "lng": 133.7751 } ], - "buildWarning": "Deferred 368 low-yield source(s) on health cooldown. | Guardrails breached: successful-source-floor-breached (runtime=283557ms, failedRate=0.017, successfulSources=7)", + "buildWarning": null, "runMetrics": { "schedulerMode": "candidate", "htmlBudget": 40, "htmlDomainCapPerRun": 3, - "htmlDomainUsage": { - "news.met.police.uk": 2, - "www.avonandsomerset.police.uk": 2, - "www.scotland.police.uk": 1, - "www.psni.police.uk": 1, - "www.westyorkshirepolice.co.uk": 1, - "policie.gov.cz": 1, - "www.politie.nl": 2, - "mossos.gencat.cat": 1, - "www.policia.es": 1, - "www.policiajudiciaria.pt": 1, - "news.camden.gov.uk": 1, - "www.chelwest.nhs.uk": 1, - "www.hounslow.gov.uk": 1, - "www.merton.gov.uk": 1, - "northeastlondon.icb.nhs.uk": 1, - "www.walthamforest.gov.uk": 1, - "www.gov.uk": 3, - "www.mi5.gov.uk": 1, - "community-messaging.dc.police.uk": 1, - "www.bmi.gv.at": 1, - "www.unodc.org": 1, - "www.hillingdon.gov.uk": 1, - "www.homerton.nhs.uk": 1, - "www.kch.nhs.uk": 1, - "www.swlstg.nhs.uk": 1, - "news.npcc.police.uk": 1, - "www.ipco.org.uk": 1, - "hmiprobation.justiceinspectorates.gov.uk": 1, - "www.gov.scot": 1, - "www.dhs.gov": 1, - "www.state.gov": 1, - "ofac.treasury.gov": 1, - "www.verfassungsschutz.de": 1, - "www.interpol.int": 1, - "www.bexley.gov.uk": 1 - }, + "htmlDomainUsage": {}, "coverage": { - "eligible": 547, - "scheduled": 179, - "initialScheduled": 98, - "continuationAttempted": 81, - "checked": 176, - "eligibleCheckedRate": 0.322, - "scheduledCheckedRate": 0.983 + "eligible": 4, + "scheduled": 4, + "initialScheduled": 1, + "continuationAttempted": 3, + "checked": 4, + "eligibleCheckedRate": 1, + "scheduledCheckedRate": 1 }, "freshnessSlaByTier": { "high": { - "count": 7, - "avgMinutes": 5062, - "p95Minutes": 11000 - }, - "low": { - "count": 12, - "avgMinutes": 6733, - "p95Minutes": 9727 + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 }, "medium": { - "count": 20, - "avgMinutes": 4992, - "p95Minutes": 11000 + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 } }, "failureReasons": { - "success": 7, - "unchanged": 4, - "timeout-or-aborted": 4 + "success": 2 }, "sourceRunStats": { - "totalConfiguredSources": 549, - "sourcesCheckedThisRun": 179, - "sourcesUpdatedThisRun": 7, - "sourcesFailedThisRun": 3, - "sourcesUnchangedThisRun": 4 + "totalConfiguredSources": 4, + "sourcesCheckedThisRun": 4, + "sourcesUpdatedThisRun": 2, + "sourcesFailedThisRun": 0, + "sourcesUnchangedThisRun": 0 }, - "runDurationMs": 283557, + "runDurationMs": 296, "playwrightFallback": { "attempts": 0, "successes": 0, @@ -12493,21 +12514,19 @@ "guardrails": { "maxRuntimeMs": 720000, "maxFailedSourceRate": 0.65, - "minSuccessfulSources": 8, - "targetSuccessfulSourcesPerRun": 60, - "failedSourceRate": 0.017, - "successfulSources": 7, - "violations": [ - "successful-source-floor-breached" - ], + "minSuccessfulSources": 1, + "targetSuccessfulSourcesPerRun": 1, + "failedSourceRate": 0, + "successfulSources": 2, + "violations": [], "midRun": { "throttleLevel": 0, - "totalAttempted": 179, - "totalFailed": 3, - "totalSuccessful": 7, - "failedRate": 0.017, - "successRate": 0.039, - "avgSourceDurationMs": 1584, + "totalAttempted": 4, + "totalFailed": 0, + "totalSuccessful": 2, + "failedRate": 0, + "successRate": 0.5, + "avgSourceDurationMs": 70, "criticalOnly": false, "skipPlaywright": false, "transitions": [] @@ -12517,22536 +12536,187 @@ "health": { "expectedRefreshMinutes": 30, "staleAfterMinutes": 50, - "lastAttemptedRefreshTime": "2026-04-24T08:17:25.806Z", + "lastAttemptedRefreshTime": "2026-04-24T11:19:00.278Z", "usedFallback": false, - "lastSuccessfulRefreshTime": "2026-04-24T08:17:25.806Z", - "lastSuccessfulRunId": "24879386517", - "lastSuccessfulRunNumber": "510", + "lastSuccessfulRefreshTime": "2026-04-24T11:19:00.278Z", + "lastSuccessfulRunId": "24886716469", + "lastSuccessfulRunNumber": "366", "lastSuccessfulRunAttempt": "1", - "lastSuccessfulHeadSha": "4b91e9681a86e06ecb9443c627b7b278419b21ca", - "lastSuccessfulEvent": "schedule", - "lastSuccessfulSourceCount": 176, - "sourceErrorCount": 3, - "hasWarnings": true, - "autoDeferredSourceCount": 368, - "autoDeferredSources": [ - { - "id": "frontex-news-releases", - "provider": "Frontex a News Releases", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "bdk-rss", - "provider": "Bund Deutscher Kriminalbeamter - RSS", - "reason": "health-deprioritised", - "until": "2026-04-25T14:03:06.243Z", - "statusKind": "cooled_down" - }, - { - "id": "belgium-crisis-centre-news", - "provider": "Belgian National Crisis Centre - Newsroom", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "denmark-pet-news", - "provider": "Danish Security and Intelligence Service - News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "ecfr-feeds-index", - "provider": "ECFR - Feeds", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "enisa-news", - "provider": "ENISA (EU Cybersecurity Agency) a News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "enisa-rss-transition-page", - "provider": "ENISA - RSS Feeds Transition Notice", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "euiss-home", - "provider": "EU Institute for Security Studies", - "reason": "health-deprioritised", - "until": "2026-04-24T18:01:25.327Z", - "statusKind": "cooled_down" - }, - { - "id": "euractiv-security-rss", - "provider": "BBC News - Europe", - "reason": "health-deprioritised", - "until": "2026-04-25T14:03:06.243Z", - "statusKind": "cooled_down" - }, - { - "id": "eurojust-press-news-html", - "provider": "Eurojust - Press Releases and News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "eurojust-press-releases", - "provider": "Eurojust - Press Releases", - "reason": "health-deprioritised", - "until": "2026-04-25T18:02:43.923Z", - "statusKind": "cooled_down" - }, - { - "id": "europol-media-press", - "provider": "Europol a Media and Press", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "europol-newsroom-html", - "provider": "Europol - Newsroom", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "finland-supo-news", - "provider": "Finnish Security Intelligence Service - News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "german-bfv-news", - "provider": "German BfV - Press", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "german-interior-ministry-press", - "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", - "reason": "health-deprioritised", - "until": "2026-04-25T10:13:21.253Z", - "statusKind": "cooled_down" - }, - { - "id": "icct-home", - "provider": "ICCT - Home", - "reason": "health-deprioritised", - "until": "2026-04-24T18:01:25.327Z", - "statusKind": "cooled_down" - }, - { - "id": "nctv-english-rss", - "provider": "NCTV Netherlands - English RSS", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "paris-prefecture-police-rss-page", - "provider": "Paris Prefecture of Police - RSS", - "reason": "health-deprioritised", - "until": "2026-04-25T10:13:21.253Z", - "statusKind": "cooled_down" - }, - { - "id": "spain-interior-ministry-news", - "provider": "Spanish Ministry of the Interior - Press", - "reason": "health-deprioritised", - "until": "2026-04-25T10:13:21.253Z", - "statusKind": "cooled_down" - }, - { - "id": "statewatch-news", - "provider": "Statewatch - News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "breakingnews-ie", - "provider": "BreakingNews.ie", - "reason": "health-deprioritised", - "until": "2026-04-24T18:01:25.327Z", - "statusKind": "cooled_down" - }, - { - "id": "independent-ie", - "provider": "Independent.ie", - "reason": "health-deprioritised", - "until": "2026-04-24T18:01:25.327Z", - "statusKind": "cooled_down" - }, - { - "id": "belgian-federal-police-news", - "provider": "Belgian Federal Police - News", - "reason": "health-deprioritised", - "until": "2026-04-25T11:47:27.254Z", - "statusKind": "cooled_down" - }, - { - "id": "ertzaintza-news", - "provider": "Ertzaintza - News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - } - ], + "lastSuccessfulHeadSha": "a335cf014f6a37ba8f3bdb997e9d7f64e291750e", + "lastSuccessfulEvent": "dynamic", + "lastSuccessfulSourceCount": 4, + "sourceErrorCount": 0, + "hasWarnings": false, + "autoDeferredSourceCount": 0, + "autoDeferredSources": [], "operationalDeferredSourceCount": 0, "operationalDeferredSources": [], "sourceRunStats": { - "totalConfiguredSources": 549, - "sourcesCheckedThisRun": 179, - "sourcesUpdatedThisRun": 7, - "sourcesFailedThisRun": 3, - "sourcesUnchangedThisRun": 4 + "totalConfiguredSources": 4, + "sourcesCheckedThisRun": 4, + "sourcesUpdatedThisRun": 2, + "sourcesFailedThisRun": 0, + "sourcesUnchangedThisRun": 0 }, "extraMetrics": { "schedulerMode": "candidate", "coverage": { - "eligible": 547, - "scheduled": 179, - "initialScheduled": 98, - "continuationAttempted": 81, - "checked": 176, - "eligibleCheckedRate": 0.322, - "scheduledCheckedRate": 0.983 + "eligible": 4, + "scheduled": 4, + "initialScheduled": 1, + "continuationAttempted": 3, + "checked": 4, + "eligibleCheckedRate": 1, + "scheduledCheckedRate": 1 }, "freshnessSlaByTier": { "high": { - "count": 7, - "avgMinutes": 5062, - "p95Minutes": 11000 - }, - "low": { - "count": 12, - "avgMinutes": 6733, - "p95Minutes": 9727 + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 }, "medium": { - "count": 20, - "avgMinutes": 4992, - "p95Minutes": 11000 + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 } }, "failureReasons": { - "success": 7, - "unchanged": 4, - "timeout-or-aborted": 4 + "success": 2 }, "sourceRunStats": { - "totalConfiguredSources": 549, - "sourcesCheckedThisRun": 179, - "sourcesUpdatedThisRun": 7, - "sourcesFailedThisRun": 3, - "sourcesUnchangedThisRun": 4 + "totalConfiguredSources": 4, + "sourcesCheckedThisRun": 4, + "sourcesUpdatedThisRun": 2, + "sourcesFailedThisRun": 0, + "sourcesUnchangedThisRun": 0 }, "playwrightFallback": { "attempts": 0, "successes": 0 }, - "guardrailViolations": [ - "successful-source-floor-breached" - ], + "guardrailViolations": [], "midRunGuardrail": { "throttleLevel": 0, - "totalAttempted": 179, - "totalFailed": 3, - "totalSuccessful": 7, - "failedRate": 0.017, - "successRate": 0.039, - "avgSourceDurationMs": 1584, + "totalAttempted": 4, + "totalFailed": 0, + "totalSuccessful": 2, + "failedRate": 0, + "successRate": 0.5, + "avgSourceDurationMs": 70, "criticalOnly": false, "skipPlaywright": false, "transitions": [] } }, "sourceHealth": { - "euaa-news": { - "provider": "EUAA (EU Agency for Asylum) - Press Releases", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "fixture-rss-incidents": { + "provider": "Fixture Incidents Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-24T11:19:00.278Z", "lastBuiltCount": 0, "successfulRuns": 0, - "emptyRuns": 80, + "emptyRuns": 1, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, + "consecutiveEmptyRuns": 1, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": "2026-04-24T11:19:00.278Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, + "healthScore": 77, + "quarantined": false, "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" + "quarantineReason": null, + "nextFetchAt": "2026-04-24T12:16:00.278Z" }, - "eulisa-news-events": { - "provider": "eu-LISA - News and Events (RSS)", - "lane": "border", + "fixture-rss-context": { + "provider": "Fixture Context Feed", + "lane": "context", "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastCheckedAt": "2026-04-24T11:19:00.278Z", "lastBuiltCount": 0, "successfulRuns": 0, - "emptyRuns": 80, + "emptyRuns": 1, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, + "consecutiveEmptyRuns": 1, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": "2026-04-24T11:19:00.278Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "frontex-news-releases": { - "provider": "Frontex a News Releases", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "austria-interior-ministry-news": { - "provider": "Austrian Interior Ministry - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "cooldownUntil": "2026-04-26T08:17:25.806Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T08:17:25.806Z" - }, - "austria-interior-ministry-rss-index": { - "provider": "Austrian Interior Ministry - RSS Index", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "cooldownUntil": "2026-04-26T08:17:25.806Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, + "healthScore": 77, + "quarantined": false, "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T08:17:25.806Z" - }, - "bdk-rss": { - "provider": "Bund Deutscher Kriminalbeamter - RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "belgium-crisis-centre-news": { - "provider": "Belgian National Crisis Centre - Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "quarantineReason": "Health score degraded to 5 after repeated failures", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "denmark-pet-news": { - "provider": "Danish Security and Intelligence Service - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ecfr-feeds-index": { - "provider": "ECFR - Feeds", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "enisa-news": { - "provider": "ENISA (EU Cybersecurity Agency) a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" + "quarantineReason": null, + "nextFetchAt": "2026-04-24T13:56:00.278Z" }, - "enisa-rss-transition-page": { - "provider": "ENISA - RSS Feeds Transition Notice", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, + "fixture-atom-oversight": { + "provider": "Fixture Oversight Feed", + "lane": "oversight", + "kind": "atom", + "lastCheckedAt": "2026-04-24T11:19:00.278Z", + "lastBuiltCount": 1, + "successfulRuns": 1, "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "euiss-home": { - "provider": "EU Institute for Security Studies", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, + "consecutiveEmptyRuns": 0, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, + "lastSuccessfulAt": "2026-04-24T11:19:00.278Z", "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastEmptyAt": null, "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "euractiv-security-rss": { - "provider": "BBC News - Europe", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eurojust-press-news-html": { - "provider": "Eurojust - Press Releases and News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eurojust-press-releases": { - "provider": "Eurojust - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 72, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T16:07:40.227Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 90, + "quarantined": false, "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" + "quarantineReason": null, + "nextFetchAt": "2026-04-24T11:57:00.278Z" }, - "europol-media-press": { - "provider": "Europol a Media and Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, + "fixture-json-prevention": { + "provider": "Fixture Prevention Feed", + "lane": "prevention", + "kind": "json", + "lastCheckedAt": "2026-04-24T11:19:00.278Z", + "lastBuiltCount": 1, + "successfulRuns": 1, "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "europol-news-rss": { - "provider": "Europol - Newsroom (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, + "consecutiveEmptyRuns": 0, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, + "lastSuccessfulAt": "2026-04-24T11:19:00.278Z", "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": null, "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "europol-newsroom-html": { - "provider": "Europol - Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "finland-supo-news": { - "provider": "Finnish Security Intelligence Service - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "german-bfv-news": { - "provider": "German BfV - Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "german-interior-ministry-press": { - "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 400", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Health score degraded to 20 after repeated failures", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "icct-home": { - "provider": "ICCT - Home", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nctv-english-rss": { - "provider": "NCTV Netherlands - English RSS", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "paris-prefecture-police-rss-page": { - "provider": "Paris Prefecture of Police - RSS", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "spain-interior-ministry-news": { - "provider": "Spanish Ministry of the Interior - Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "statewatch-news": { - "provider": "Statewatch - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "breakingnews-ie": { - "provider": "BreakingNews.ie", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "independent-ie": { - "provider": "Independent.ie", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "belgian-federal-police-news": { - "provider": "Belgian Federal Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T11:47:27.254Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastEmptyAt": "2026-04-23T10:13:21.253Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "cooldownUntil": "2026-04-25T11:47:27.254Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-25T11:47:27.254Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "czech-police-news": { - "provider": "Police of the Czech Republic - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "dutch-police-rss-index": { - "provider": "Politie.nl - RSS", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ertzaintza-news": { - "provider": "Ertzaintza - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "finland-police-news": { - "provider": "Finnish Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "german-bka-press": { - "provider": "German BKA - Press Releases (2026 archive)", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "quarantineReason": "Health score degraded to 5 after repeated failures", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "german-bka-press-releases-de": { - "provider": "BKA Germany - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T17:39:27.641Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 15, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastEmptyAt": "2026-04-22T16:17:11.443Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T07:32:24.475Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "cooldownUntil": "2026-04-24T17:39:27.641Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T08:04:04.612Z", - "quarantineReason": "Infrastructure instability — mixed timeout and network errors; auto-retry likely to recover", - "nextFetchAt": "2026-04-24T17:39:27.641Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "guardia-civil-news": { - "provider": "El Pais English - Guardia Civil", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "mossos-news": { - "provider": "Mossos d'Esquadra - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "paris-prefecture-police-press-releases": { - "provider": "Paris Prefecture of Police - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "policia-nacional-news": { - "provider": "Policia Nacional - Press", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T18:05:04.781Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-19T18:05:04.781Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "quarantineReason": "Health score degraded to 5 after repeated failures", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "romanian-police-news": { - "provider": "Romanian Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "curia-press-rss-en": { - "provider": "Court of Justice of the European Union - RSS (EN/FR)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 65, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eppo-news-node-7": { - "provider": "European Public Prosecutor's Office - News (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-cellar-rss-atom": { - "provider": "Publications Office of the European Union (CELLAR) a RSS/Atom Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 61, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-commission-counter-terrorism-measures-2026": { - "provider": "European Commission - Counter Terrorism Measures 2026", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-commission-home-affairs-topic": { - "provider": "European Commission - Home Affairs", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-commission-presscorner-home": { - "provider": "Council of the EU - Press Releases (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-council-fight-against-terrorism": { - "provider": "Council of the EU - Fight Against Terrorism", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-council-jha-meetings": { - "provider": "Council of the EU - JHA Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 72, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T16:07:40.227Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-council-jha-register-rss": { - "provider": "Council of the EU - Latest Documents RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-council-press-releases": { - "provider": "Council of the European Union a Press Releases (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-council-press-releases-html": { - "provider": "Council of the EU - Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-council-rss-index": { - "provider": "Council of the EU - RSS Index", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-ct-coordinator": { - "provider": "EU Counter-Terrorism Coordinator a Council of the EU", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-ejustice-news-rss": { - "provider": "European e-Justice - News RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 57, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 34, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T13:27:18.679Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-18T13:27:18.679Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-eppo-news": { - "provider": "European Public Prosecutor's Office - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-fra-rss": { - "provider": "EU Agency for Fundamental Rights (FRA) a RSS", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-21T11:46:02.615Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-home-affairs-news": { - "provider": "European Commission a Home Affairs News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-olaf-news": { - "provider": "OLAF (EU Anti-Fraud Office) a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-security-union-strategy": { - "provider": "European Commission a Security Union Strategy", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eucrim-counter-terrorism-agenda": { - "provider": "eucrim - Commission Counter Terrorism Agenda", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eucrim-judicial-counter-terrorism-register": { - "provider": "eucrim - Judicial Counter Terrorism Register", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eurojust-publications": { - "provider": "Eurojust a Publications (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 105, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eurojust-rss-feeds-page": { - "provider": "Eurojust - RSS Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "europarl-committee-libe": { - "provider": "European Parliament - LIBE Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "europarl-committee-sede": { - "provider": "European Parliament - SEDE Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "europarl-pressreleases-committees": { - "provider": "European Parliament a Press Releases (Committees) (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "europol-tesat-report": { - "provider": "Europol - TESAT Report", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fra-rss": { - "provider": "Human Rights Watch - News RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "europol-eu-iru": { - "provider": "Europol a EU Internet Referral Unit (EU IRU)", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "isd-global-publications": { - "provider": "ISD - Publications", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ncsc-nl-rss": { - "provider": "NCSC Netherlands - RSS", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-council-terrorism-sanctions": { - "provider": "Council of the EU - Sanctions Against Terrorism", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unhcr-europe-news": { - "provider": "UNHCR Europe a News", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "clingendael-publications": { - "provider": "Clingendael Institute a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dw-europe-rss": { - "provider": "Deutsche Welle a Europe (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ecfr-publications": { - "provider": "European Council on Foreign Relations (ECFR) a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "euronews-europe": { - "provider": "Euronews a Europe", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 28, - "emptyRuns": 21, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-22T22:53:26.529Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 406", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 406", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-24T13:04:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 24, - "quarantined": true, - "quarantinedAt": "2026-04-23T03:28:47.210Z", - "quarantineReason": "Health score degraded to 24 after repeated failures", - "nextFetchAt": "2026-04-24T13:04:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "financial-times-world": { - "provider": "Financial Times a World", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "france24-europe-rss": { - "provider": "France 24 a Europe (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T05:47:56.833Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 4, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T05:47:56.833Z", - "lastEmptyAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T16:03:49.134Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T06:12:01.477Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T05:47:56.833Z" - } - ], - "cooldownUntil": "2026-04-25T05:47:56.833Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-19T16:03:49.134Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T05:47:56.833Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "french-interior-ministry-news": { - "provider": "French Ministry of the Interior - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "icct-perspectives-on-terrorism": { - "provider": "Perspectives on Terrorism (ICCT) a Journal", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "icct-publications": { - "provider": "International Centre for Counter-Terrorism (ICCT) - Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "netherlands-nctv-news": { - "provider": "Dutch NCTV - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "norway-pst-news": { - "provider": "Norwegian Government - News and Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 72, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T16:07:40.227Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "politico-europe": { - "provider": "Politico Europe", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rte-ireland-news-rss": { - "provider": "RTE News - Ireland (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 2, - "emptyRuns": 9, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T11:47:27.254Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 5, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T11:17:25.806Z" - }, - "switzerland-fedpol-news": { - "provider": "Swiss fedpol - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T21:59:30.032Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 5, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T21:59:30.032Z", - "lastEmptyAt": "2026-04-22T20:37:31.462Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T21:59:30.032Z" - } - ], - "cooldownUntil": "2026-04-24T21:59:30.032Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T21:59:30.032Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "telegraph-world-news": { - "provider": "The Telegraph a World News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 30, - "emptyRuns": 27, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T16:07:40.227Z", - "lastFailureAt": "2026-04-19T14:11:10.963Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T08:15:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 23, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T08:15:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "vox-pol-publications": { - "provider": "VOX-Pol Network a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "french-gendarmerie-news": { - "provider": "Gendarmerie Nationale - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "french-police-nationale-news": { - "provider": "Police Nationale - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ireland-gardai-press": { - "provider": "An Garda Siochana - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "netherlands-police-news": { - "provider": "Dutch National Police - News (EN)", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "paris-police-prefecture-news": { - "provider": "France24 - France (RSS)", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "portugal-pj-news": { - "provider": "Policia Judiciaria Portugal - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 43, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T15:59:44.503Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T19:18:33.309Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T15:59:44.503Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "portugal-psp-news": { - "provider": "The Portugal News - Crime", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "coe-counter-terrorism": { - "provider": "Council of Europe a Counter-Terrorism", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "echr-key-judgments-rss": { - "provider": "European Court of Human Rights - Key Judgments RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-22T17:39:27.641Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 60, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastEmptyAt": "2026-04-22T16:17:11.443Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 400", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "cooldownUntil": "2026-04-24T17:39:27.641Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T17:39:27.641Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "echr-press-releases-rss": { - "provider": "European Court of Human Rights - Press Releases RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "french-justice-ministry-news": { - "provider": "French Ministry of Justice - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "netherlands-prosecution-news": { - "provider": "Dutch Public Prosecution Service - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bfv-de-english": { - "provider": "BfV service page (Federal Office for the Protection of the Constitution)", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 56, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T11:07:28.674Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T11:07:28.674Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "dsn-at-english": { - "provider": "DSN Austria - Aktuelles", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "isd-global": { - "provider": "Institute for Strategic Dialogue (ISD) a Articles & Reports", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ocam-be-english": { - "provider": "CUTA (Belgium) threat analysis", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 19, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T16:07:40.227Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T22:54:57.851Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "pet-dk-english": { - "provider": "PET (Denmark) a English News", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "pst-no-english": { - "provider": "PST (Norway) English reporting page", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ran-network": { - "provider": "RUSI - Terrorism and Conflict", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "sapo-se-english": { - "provider": "Swedish Security Service English news", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "supo-fi-english": { - "provider": "SUPO Finland news and press releases", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "iom-news": { - "provider": "IOM (International Organization for Migration) a News", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "acled-updates": { - "provider": "ACLED a Updates and Analysis", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "aljazeera-news-rss": { - "provider": "Al Jazeera English a Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 24, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T10:13:21.253Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 3, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T11:55:25.806Z" - }, - "ap-top-news": { - "provider": "BBC News - Top Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-world": { - "provider": "BBC News a World", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-world-legacy": { - "provider": "BBC News a World (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bellingcat": { - "provider": "Bellingcat a Investigations", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chatham-house-rss": { - "provider": "Chatham House a Research & Commentary (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 7, - "emptyRuns": 11, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T14:03:06.243Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 40, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chathamhouse-events": { - "provider": "Chatham House a Events (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chathamhouse-intl-security-feed": { - "provider": "Chatham House a International Security Programme (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 5, - "emptyRuns": 28, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T14:03:06.243Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 46, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chathamhouse-news-releases": { - "provider": "Chatham House a News Releases (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "counter-extremism-project-news": { - "provider": "Counter Extremism Project a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 5, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T12:14:24.733Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T21:04:21.166Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "crisis-group": { - "provider": "International Crisis Group a Research & Analysis", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "crisis-group-europe": { - "provider": "International Crisis Group a Europe (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "global-initiative-news": { - "provider": "Global Initiative Against Transnational Organized Crime a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "interpol-news-events": { - "provider": "INTERPOL a News and Events", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "just-security": { - "provider": "Just Security a Law, Rights & National Security", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T23:55:39.351Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T09:29:55.311Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T04:05:33.139Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T09:29:55.311Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lawfare-blog": { - "provider": "Just Security - National Security Analysis", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "long-war-journal": { - "provider": "Long War Journal a News Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 6, - "emptyRuns": 17, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", - "lastFailureAt": "2026-04-18T00:05:41.686Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 29, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nato-news-rss": { - "provider": "NATO a News (RSS)", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "occrp-news": { - "provider": "OCCRP a Organized Crime and Corruption Reporting Project", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "osce-press-releases": { - "provider": "OSCE a Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "resolve-network-research": { - "provider": "RESOLVE Network a Research", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Health score degraded to 17 after repeated failures", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "reuters-uk": { - "provider": "Reuters a UK News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rferl-security-news-rss": { - "provider": "Radio Free Europe/Radio Liberty a Security (RSS)", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - } - ], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "soufan-center-intelbrief": { - "provider": "The Soufan Center a IntelBrief", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tech-against-terrorism-podcast": { - "provider": "Tech Against Terrorism - Podcast", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tony-blair-institute-news": { - "provider": "Tony Blair Institute for Global Change a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unodc-news": { - "provider": "UNODC (UN Office on Drugs and Crime) a Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "war-on-the-rocks": { - "provider": "War on the Rocks a National Security & CT Analysis", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gctf-news": { - "provider": "Global Counterterrorism Forum (GCTF) a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unoct-news": { - "provider": "UN Office of Counter-Terrorism (UNOCT) - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "unsc-counter-terrorism-committee": { - "provider": "UN Security Council - Counter-Terrorism Committee (CTC) Updates", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gnet-artificial-intelligence-rss": { - "provider": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 76, - "emptyRuns": 12, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T20:17:25.806Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 64, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T20:17:25.806Z" - }, - "gnet-radicalisation-rss": { - "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-16T16:57:11.406Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T21:08:30.446Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gnet-youth-rss": { - "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-22T17:39:27.641Z", - "lastBuiltCount": 0, - "successfulRuns": 5, - "emptyRuns": 0, - "failedRuns": 10, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T08:04:04.612Z", - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T11:07:28.674Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T12:15:37.169Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T22:00:46.520Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T17:16:47.386Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "cooldownUntil": "2026-04-24T17:39:27.641Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T22:00:46.520Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T17:39:27.641Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tech-against-terrorism": { - "provider": "Tech Against Terrorism a Blog", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tech-against-terrorism-home": { - "provider": "Tech Against Terrorism - Home", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fatf-news": { - "provider": "Financial Action Task Force (FATF) a News", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "interpol-notices": { - "provider": "INTERPOL a Notices", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unsc-1267-press-releases": { - "provider": "UN Security Council - ISIL/Da'esh & Al-Qaeda Sanctions Committee Press Releases", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unsc-consolidated-list": { - "provider": "UN Security Council - Consolidated Sanctions List Updates (RSS)", - "lane": "sanctions", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "barking-dagenham-council-news": { - "provider": "Barking and Dagenham Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 6, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "barnet-council-news": { - "provider": "Barnet Post", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "barts-health-news": { - "provider": "Barts Health NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T08:09:12.931Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 9, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T08:09:12.931Z", - "lastEmptyAt": "2026-04-23T05:47:56.833Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T08:09:12.931Z" - } - ], - "cooldownUntil": "2026-04-25T08:09:12.931Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-25T08:09:12.931Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-london-rss": { - "provider": "BBC News - London RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 28, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 17, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-18T23:43:16.267Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 49, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bexley-council-news": { - "provider": "Bexley Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "brent-council-news": { - "provider": "Brent Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "bromley-council-news": { - "provider": "Bromley Council a Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "camden-council-news": { - "provider": "Camden Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "chelsea-westminster-news": { - "provider": "Chelsea and Westminster Hospital NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "city-of-london-police-fraud-reporting": { - "provider": "City of London Police - Fraud Reporting", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cnwl-news": { - "provider": "Central and North West London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "croydon-council-news": { - "provider": "Croydon Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ealing-council-news": { - "provider": "Ealing Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 57, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 29, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": "2026-04-18T21:09:53.488Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T21:09:53.488Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "east-london-nhs-news": { - "provider": "East London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "enfield-council-news": { - "provider": "Enfield Council a News and Events", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gosh-news": { - "provider": "Great Ormond Street Hospital a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "guys-st-thomas-news": { - "provider": "Guy's and St Thomas' NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hackney-council-news": { - "provider": "Hackney Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hammersmith-fulham-news": { - "provider": "Hammersmith and Fulham Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 6, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "haringey-council-news": { - "provider": "Haringey Community Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "harrow-council-news": { - "provider": "Harrow Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "havering-council-news": { - "provider": "Havering Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "heathrow-media-centre": { - "provider": "Heathrow a Media Centre", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hillingdon-council-news": { - "provider": "Hillingdon Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "homerton-healthcare-news": { - "provider": "Homerton Healthcare NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hounslow-council-news": { - "provider": "Hounslow Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "imperial-healthcare-news": { - "provider": "Imperial College Healthcare NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "islington-council-news": { - "provider": "Islington Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "kensington-chelsea-newsroom": { - "provider": "Royal Borough of Kensington and Chelsea a Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "kings-college-hospital-news": { - "provider": "King's College Hospital NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "kingston-council-news": { - "provider": "Kingston Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "lambeth-council-news": { - "provider": "Lambeth Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "lewisham-council-news": { - "provider": "Salamander News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lnwh-news": { - "provider": "London North West University Healthcare NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "london-ambulance-news": { - "provider": "London Ambulance Service a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-city-airport-media-centre": { - "provider": "London City Airport a Media Centre", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-councils-news": { - "provider": "London Councils a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-fire-brigade-news": { - "provider": "London Fire Brigade a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-gov-home": { - "provider": "London.gov.uk", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-gov-press-releases-html": { - "provider": "London.gov.uk - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-gov-rss-80603": { - "provider": "Greater London Authority a RSS Feed 80603", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "london-gov-rss-80632": { - "provider": "Greater London Authority a RSS Feed 80632", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "mayor-of-london-press-releases": { - "provider": "Mayor of London a Press Releases", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "merton-council-news": { - "provider": "Merton Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "met-police-the-met-tag": { - "provider": "Metropolitan Police - The Met Tag", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 76, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "moorfields-news": { - "provider": "Moorfields Eye Hospital NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "nelft-news": { - "provider": "North East London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "newham-council-news": { - "provider": "Newham Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "nhs-london-ncl-news": { - "provider": "NHS North Central London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nhs-london-nel-news": { - "provider": "NHS North East London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-21T10:07:46.576Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T10:07:46.576Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "nhs-london-nwl-news": { - "provider": "NHS North West London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "nhs-london-sel-news": { - "provider": "NHS South East London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nhs-london-swl-news": { - "provider": "NHS South West London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "north-middlesex-news": { - "provider": "North Middlesex University Hospital a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "oxleas-news": { - "provider": "Oxleas NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "port-of-london-authority-news": { - "provider": "Port of London Authority a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "redbridge-council-news": { - "provider": "Redbridge Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "richmond-council-news": { - "provider": "Richmond Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 65, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "royal-free-london-news": { - "provider": "Royal Free London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "royal-greenwich-news": { - "provider": "Royal Borough of Greenwich a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 6, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "slam-news": { - "provider": "South London and Maudsley NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "southwark-newsroom": { - "provider": "Southwark Council a Newsroom", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "st-georges-news": { - "provider": "St George's University Hospitals NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "sutton-council-news": { - "provider": "Sutton Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "swlstg-news": { - "provider": "South West London and St George's Mental Health NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "tavistock-portman-news": { - "provider": "Tavistock and Portman NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tfl-press-releases": { - "provider": "Transport for London - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tfl-press-releases-html": { - "provider": "Transport for London - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tower-hamlets-council-news": { - "provider": "Tower Hamlets Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uclh-news": { - "provider": "University College London Hospitals a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 58, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-21T11:46:02.615Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "waltham-forest-council-news": { - "provider": "Waltham Forest Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "wandsworth-council-news": { - "provider": "Wandsworth Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 65, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "westminster-city-council-news": { - "provider": "Westminster City Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "whittington-health-news": { - "provider": "Whittington Health a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "city-of-london-police-news": { - "provider": "National Crime Agency - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "city-of-london-police-news-html": { - "provider": "City of London Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "city-of-london-police-newsroom": { - "provider": "Metropolitan Police Service - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-london": { - "provider": "Counter Terrorism Policing London", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "met-police-latest-news": { - "provider": "Metropolitan Police - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 106, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "met-police-news": { - "provider": "Metropolitan Police Service a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 106, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "london-assembly-press-releases": { - "provider": "London Assembly a Press Releases", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "mopac-html": { - "provider": "Mayor's Office for Policing and Crime", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-resilience": { - "provider": "Resilience First - Latest Updates", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T23:56:26.571Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 17, - "failedRuns": 4, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T23:56:26.571Z", - "lastEmptyAt": "2026-04-20T11:00:44.891Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T23:56:26.571Z" - } - ], - "cooldownUntil": "2026-04-24T23:56:26.571Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T23:56:26.571Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gov-uk-fcdo-travel-advice": { - "provider": "FCDO a Foreign Travel Advice Index", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-border-force": { - "provider": "Border Force (UK) a Announcements and Publications", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ukvi": { - "provider": "UK Visas and Immigration a Announcements and Publications", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "bbc-news-england-legacy": { - "provider": "BBC News a England (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 29, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 18, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-18T11:15:29.208Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 3, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-front-page-legacy": { - "provider": "BBC News a Front Page (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 15, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-uk": { - "provider": "BBC News a UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 26, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 16, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-uk-politics-legacy": { - "provider": "BBC News a UK Politics (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 4, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-17T09:48:51.002Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T03:30:54.684Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T15:59:44.503Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-19T03:30:54.684Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chatham-house-home": { - "provider": "Chatham House", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chatham-house-security-defence": { - "provider": "Chatham House - Security and Defence", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "essex-police-news": { - "provider": "Essex Police a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gov-uk-defence-intelligence": { - "provider": "UK Defence Intelligence a GOV.UK", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-terrorism-search": { - "provider": "GOV.UK Search - Terrorism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "guardian-uk": { - "provider": "The Guardian a UK News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T21:58:03.349Z", - "lastBuiltCount": 0, - "successfulRuns": 23, - "emptyRuns": 37, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T05:47:56.833Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-23T21:58:03.349Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T09:58:03.349Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 48, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:58:03.349Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "henry-jackson-society-news": { - "provider": "RUSI - Terrorism and Conflict", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hope-not-hate-home": { - "provider": "Hope not hate podcast", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "institute-global-home": { - "provider": "Institute for Global Change", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "kent-police-news": { - "provider": "Kent Police a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "mi5-news": { - "provider": "National Crime Agency - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "mi5-news-rss-direct": { - "provider": "MI5 - News RSS", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "national-crime-agency-news": { - "provider": "National Crime Agency a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "npcc-releases": { - "provider": "National Police Chiefs' Council - Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-all-crime-leicester": { - "provider": "Police.uk - Street Crime Around Leicester", - "lane": "context", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 73, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-stops-force-leicestershire": { - "provider": "Police.uk - Force Stops (Leicestershire)", - "lane": "context", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-stops-street-leicester": { - "provider": "Police.uk - Street Stops Around Leicester", - "lane": "context", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "report-fraud-home": { - "provider": "Report Fraud", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "report-fraud-newsroom": { - "provider": "Report Fraud - Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rusi-home": { - "provider": "RUSI", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T03:30:54.684Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T03:30:54.684Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-19T03:30:54.684Z", - "quarantineReason": "Health score degraded to 20 after repeated failures", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rusi-publications": { - "provider": "RUSI (Royal United Services Institute) a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rusi-terrorism-conflict": { - "provider": "RUSI - Terrorism and Conflict", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T03:29:13.488Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T12:14:24.733Z", - "lastEmptyAt": "2026-04-24T03:29:13.488Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T12:14:24.733Z" - } - ], - "cooldownUntil": "2026-04-24T15:29:13.488Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T21:04:21.166Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T15:29:13.488Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "skwawkbox": { - "provider": "Skwawkbox", - "lane": "context", - "kind": "playwright_html", - "lastCheckedAt": "2026-04-16T22:57:09.120Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T22:57:09.120Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T22:57:09.120Z" - } - ], - "cooldownUntil": "2026-04-24T09:24:00.000Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 32, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:24:00.000Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "sky-news-uk-rss": { - "provider": "Sky News UK a Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 35, - "emptyRuns": 38, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T20:17:25.806Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 64, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T20:17:25.806Z" - }, - "the-sun-all": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-sun-all-english": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-sun-homepage": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-sun-news-english": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-yorkshire-police-coroner-appeals-rss": { - "provider": "West Yorkshire Police - Coroner Appeals Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 58, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-21T11:46:02.615Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "wiltshire-999s": { - "provider": "Wiltshire 999s", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "belfast-live": { - "provider": "Belfast Live", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 6, - "emptyRuns": 22, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 20, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T05:46:58.069Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 40, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "birmingham-mail": { - "provider": "Birmingham Mail", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "breaking-news-today": { - "provider": "Breaking News Today", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cambridge-news": { - "provider": "Cambridge News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "channel-4-news": { - "provider": "Channel 4 News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 12, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-19T17:13:24.435Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-20T11:00:44.891Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T00:08:15.005Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T03:57:52.244Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T08:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 10, - "quarantined": true, - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T08:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "consett-magazine": { - "provider": "Consett Magazine", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-echo": { - "provider": "Daily Echo", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-express": { - "provider": "Daily Express", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-mail-online": { - "provider": "Daily Mail Online - Popular Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 20, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 17, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-mirror": { - "provider": "Daily Mirror", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-politics": { - "provider": "Daily Politics", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - } - ], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "deadline-news": { - "provider": "Deadline News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T03:29:13.488Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-24T03:29:13.488Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 500", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": "2026-04-24T15:29:13.488Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "quarantineReason": "Health score degraded to 20 after repeated failures", - "nextFetchAt": "2026-04-24T15:29:13.488Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "evening-standard": { - "provider": "Evening Standard", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 3, - "emptyRuns": 25, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 20, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T05:46:58.069Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "glasgow-times": { - "provider": "Glasgow Times", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "grimsby-telegraph": { - "provider": "Grimsby Telegraph", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "herald-scotland-news": { - "provider": "Herald Scotland - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "huffpost-uk": { - "provider": "HuffPost UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "larne-times": { - "provider": "Larne Times", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "manchester-evening-news": { - "provider": "Manchester Evening News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "metro": { - "provider": "BBC News - UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "news-uk": { - "provider": "News UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "pinknews": { - "provider": "PinkNews", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - } - ], - "cooldownUntil": "2026-04-24T20:17:25.806Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T20:17:25.806Z" - }, - "politics-co-uk": { - "provider": "Politics.co.uk", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "positive-news": { - "provider": "Positive News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "scottish-field": { - "provider": "Scottish Field", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "surgezirc-uk": { - "provider": "SurgeZirc UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T11:47:27.254Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 15, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastEmptyAt": "2026-04-23T08:09:12.931Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T14:11:10.963Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "cooldownUntil": "2026-04-25T11:47:27.254Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T08:04:04.612Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T11:47:27.254Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-argus-news": { - "provider": "The Argus", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-bolton-news": { - "provider": "The Bolton News - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "church-of-england-newspaper": { - "provider": "Church of England Newspaper", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 26, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 16, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-daily-mash": { - "provider": "The Daily Mash", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - } - ], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-record": { - "provider": "Daily Record", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "guardian-uk-top-stories": { - "provider": "The Guardian - UK Top Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 12, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-18T11:15:29.208Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T23:43:16.267Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T06:30:13.977Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "independent-top-stories": { - "provider": "The Independent - Top Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T20:18:46.625Z", - "lastBuiltCount": 0, - "successfulRuns": 4, - "emptyRuns": 39, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-19T16:03:49.134Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-23T20:18:46.625Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": "2026-04-24T08:18:46.625Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T08:18:46.625Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northern-echo-news": { - "provider": "The Northern Echo - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-poke": { - "provider": "The Poke", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "scarborough-news": { - "provider": "The Scarborough News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-scotsman-news": { - "provider": "The Scotsman - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-scottish-sun": { - "provider": "The Scottish Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-sun": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-week-uk": { - "provider": "The Week UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 11, - "emptyRuns": 14, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T11:07:28.674Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T08:39:19.161Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T08:32:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 13, - "quarantined": true, - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T08:32:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-york-press-news": { - "provider": "The York Press - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "wales-online": { - "provider": "WalesOnline", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "a-lady-in-london": { - "provider": "A Lady in London", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T03:29:13.488Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T03:29:13.488Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-24T03:29:13.488Z" - } - ], - "cooldownUntil": "2026-04-26T03:29:13.488Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T03:29:13.488Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "a-luxury-travel-blog": { - "provider": "A Luxury Travel Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "age-uk-discover": { - "provider": "Age UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "alan-malcher": { - "provider": "Alan Malcher", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "arcticdry": { - "provider": "ArcticDry", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 26, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 18, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T08:04:04.612Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T08:04:04.612Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "britishbeautyblogger": { - "provider": "British Beauty Blogger", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "buy-firewood-direct": { - "provider": "Buy Firewood Direct", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "carly-rowena": { - "provider": "Carly Rowena", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cherished-holiday-homes": { - "provider": "Cherished Holiday Homes", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chique-home-living": { - "provider": "Chique Home Living", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "clubwise-blog": { - "provider": "ClubWise Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "disneyrollergirl": { - "provider": "Disneyrollergirl", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "elluminet-press": { - "provider": "9to5Mac", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Health score degraded to 20 after repeated failures", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "england-naturally": { - "provider": "England, Naturally", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 18, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-24T20:52:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": true, - "quarantinedAt": "2026-04-23T03:28:47.210Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T20:52:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "evening-shire": { - "provider": "Evening Shire", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T20:18:46.625Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastEmptyAt": "2026-04-23T20:18:46.625Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "cooldownUntil": "2026-04-24T08:18:46.625Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T08:18:46.625Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "everything-zany": { - "provider": "Everything Zany", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T14:03:06.243Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "faded-spring": { - "provider": "Emily Underworld", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fmcg-gurus": { - "provider": "FMCG Gurus", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 24, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 9, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-24T12:16:25.806Z" - }, - "foreign-office-blogs": { - "provider": "Foreign Office Blogs", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "fresh-design-blog": { - "provider": "Fresh Design Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ian-neate-blog": { - "provider": "9to5Mac", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "jollydeck": { - "provider": "JollyDeck", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lifestylelinked": { - "provider": "LifeStyleLinked", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-review-of-books": { - "provider": "London Review of Books", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "love-my-dress": { - "provider": "Love My Dress", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 18, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 520", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 11, - "quarantined": true, - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "quarantineReason": "Health score degraded to 14 after repeated failures", - "nextFetchAt": "2026-04-24T10:21:25.806Z" - }, - "manic-mum-life": { - "provider": "Manic Mum Life", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T14:03:06.243Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "marie-claire-uk": { - "provider": "Marie Claire UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "office-breaks": { - "provider": "Office Breaks", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "on-the-think-of": { - "provider": "On The Think Of", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "quadrant2design-exhibiting-guides": { - "provider": "Quadrant2Design Exhibiting Guides", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T23:57:53.617Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastEmptyAt": "2026-04-23T23:57:53.617Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "cooldownUntil": "2026-04-24T11:57:53.617Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T11:57:53.617Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "really-ree": { - "provider": "Really Ree", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T14:03:06.243Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rocknroll-bride": { - "provider": "Rock n Roll Bride", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "semibold": { - "provider": "Semibold", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 13, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "silly-old-sod": { - "provider": "Silly Old Sod", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "cooldownUntil": "2026-04-24T20:17:25.806Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T04:05:33.139Z", - "quarantineReason": "Persistent timeouts — endpoint may be overloaded or unreachable", - "nextFetchAt": "2026-04-24T20:17:25.806Z" - }, - "silverspoon-london": { - "provider": "SilverSpoon London", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "sks-business-services": { - "provider": "SKS Business Services", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hnd-assignment-help-uk-medium": { - "provider": "Stories by HND Assignment Help UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "streetspace": { - "provider": "Streetspace", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tenura": { - "provider": "Tenura", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "thank-you-for-the-days": { - "provider": "Thank you for the days", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 4, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-19T14:11:10.963Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-curry-guy": { - "provider": "The Curry Guy", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "real-talk-uk": { - "provider": "The Real Talk UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-stratfordian": { - "provider": "The Stratfordian", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "training-express": { - "provider": "Training Express", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-constitutional-law-association": { - "provider": "UK Constitutional Law Association", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-fundraising-blog": { - "provider": "UK Fundraising", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-human-rights-blog": { - "provider": "UK Human Rights Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "vershd": { - "provider": "Vershd", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "vuelio-uk": { - "provider": "Vuelio", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "avon-and-somerset-police-news-html": { - "provider": "Avon and Somerset Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "avon-somerset-police-news": { - "provider": "Avon & Somerset Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "bedfordshire-police-news": { - "provider": "Bedfordshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bedfordshire-police-news-search": { - "provider": "Bedfordshire Police - News Search", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "british-transport-police-news": { - "provider": "British Transport Police Authority - News Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "btp-british-transport-police-news-html": { - "provider": "British Transport Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cambridgeshire-police-news-search": { - "provider": "Cambridgeshire Police - News Search", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cheshire-police-news": { - "provider": "Cheshire Constabulary - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cleveland-police-news": { - "provider": "Cleveland Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cps-news-centre": { - "provider": "Crown Prosecution Service a News Centre", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-north-west": { - "provider": "Counter Terrorism Policing North West", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-uk-latest-news": { - "provider": "Counter Terrorism Policing UK a Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-uk-rss-feed": { - "provider": "Counter Terrorism Policing UK - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cumbria-police-news": { - "provider": "Cumbria Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cumbria-police-newsroom": { - "provider": "Cumbria Police - Newsroom", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "derbyshire-police-news": { - "provider": "Derbyshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "devon-and-cornwall-police-newsroom": { - "provider": "Devon and Cornwall Police - Newsroom", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "devon-cornwall-police-news": { - "provider": "Devon and Cornwall Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dorset-police-news": { - "provider": "Dorset Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dorset-police-newsroom": { - "provider": "Dorset Police - Newsroom", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "durham-constabulary-news": { - "provider": "Durham Constabulary a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "durham-police-durham-news": { - "provider": "Durham Police - Durham News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dyfed-powys-police-news": { - "provider": "Dyfed-Powys Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "essex-police-news-html": { - "provider": "Essex Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gloucestershire-police-news": { - "provider": "Gloucestershire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gmp-news": { - "provider": "Greater Manchester Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "greater-manchester-police-news": { - "provider": "Greater Manchester Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gwent-police-news": { - "provider": "Gwent Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hampshire-police-news": { - "provider": "Hampshire & Isle of Wight Constabulary a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hertfordshire-police-news": { - "provider": "Hertfordshire Constabulary a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "humberside-police-news-search": { - "provider": "Humberside Police - News Search", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "kent-police-news-html": { - "provider": "Kent Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lancashire-constabulary-news": { - "provider": "Lancashire Constabulary a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "leicestershire-police-news": { - "provider": "National Crime Agency - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lincolnshire-police-news": { - "provider": "Lincolnshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "merseyside-police-news": { - "provider": "Merseyside Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "merseyside-police-news-html": { - "provider": "Merseyside Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "norfolk-constabulary-news": { - "provider": "Norfolk Constabulary - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "north-wales-police-news": { - "provider": "North Wales Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "north-yorkshire-police-news-html": { - "provider": "North Yorkshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northamptonshire-police-news-html": { - "provider": "Northamptonshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northumbria-police-news": { - "provider": "North East Bylines", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northumbria-police-northumbria-news": { - "provider": "Northumbria Police - Northumbria News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nottinghamshire-police-news": { - "provider": "Nottinghamshire Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nottinghamshire-police-nottinghamshire-news": { - "provider": "Nottinghamshire Police - Nottinghamshire News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "police-scotland-news": { - "provider": "Police Scotland news", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 30, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T19:32:35.264Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Health score degraded to 23 after repeated failures", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "psni-latest-news": { - "provider": "Police Service of Northern Ireland - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "psni-news": { - "provider": "Police Service of Northern Ireland a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "south-wales-police-news": { - "provider": "South Wales Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "south-yorkshire-police-news": { - "provider": "South Yorkshire Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "staffordshire-police-news": { - "provider": "Staffordshire Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "staffordshire-police-staffordshire-news": { - "provider": "Staffordshire Police - Staffordshire News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "suffolk-constabulary-news": { - "provider": "Suffolk Constabulary - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "surrey-police-news": { - "provider": "Surrey Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "sussex-police-news": { - "provider": "Sussex Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "thames-valley-police-news": { - "provider": "Thames Valley Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "thames-valley-police-news-html": { - "provider": "Thames Valley Police - Thames Valley News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "warwickshire-police-news": { - "provider": "Warwickshire Connected - Latest Alerts", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-mercia-police-news-html": { - "provider": "West Mercia Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-midlands-police-news": { - "provider": "West Midlands Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-yorkshire-police-all-rss": { - "provider": "West Yorkshire Police - All Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-police-appeals-rss": { - "provider": "West Yorkshire Police - Appeals Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-police-missing-rss": { - "provider": "West Yorkshire Police - Missing Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-yorkshire-police-news": { - "provider": "West Yorkshire Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-21T11:46:02.615Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-yorkshire-police-news-appeals": { - "provider": "West Yorkshire Police - News Appeals", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-police-news-rss": { - "provider": "West Yorkshire Police - News Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-police-releases-rss": { - "provider": "West Yorkshire Police - Releases Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "wiltshire-police-news": { - "provider": "Wiltshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "attorney-generals-office-html": { - "provider": "Attorney General's Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "cabinet-office-html": { - "provider": "Cabinet Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "cps-homepage": { - "provider": "Crown Prosecution Service", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "crown-office-news": { - "provider": "Crown Office and Procurator Fiscal Service - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "echr-uk-grand-chamber-rss": { - "provider": "European Court of Human Rights - UK Grand Chamber RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "extremism-commission-blog": { - "provider": "Commission for Countering Extremism - Blog", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "fcdo-html": { - "provider": "Foreign, Commonwealth & Development Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 76, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-scot-access-to-justice-latest": { - "provider": "Scottish Government - Access to Justice Latest", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-cabinet-office-atom": { - "provider": "Cabinet Office a GOV.UK Atom Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-hmcts": { - "provider": "HMCTS a Courts and Tribunals Announcements", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-hmic": { - "provider": "HM Inspectorate of Constabulary a GOV.UK", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gov-uk-home-office-atom": { - "provider": "UK Home Office a Atom Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-ipco": { - "provider": "Investigatory Powers Commissioner's Office a GOV.UK", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-mod-atom": { - "provider": "Ministry of Defence a GOV.UK Atom Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-moj-atom": { - "provider": "Ministry of Justice a GOV.UK Atom Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-news-and-communications-atom": { - "provider": "GOV.UK - News and Communications Atom", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 17, - "emptyRuns": 74, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 30, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-20T21:17:14.299Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-parliament-jcnss": { - "provider": "UK Parliament a Joint Committee on National Security Strategy", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hmiprisons-news": { - "provider": "HM Inspectorate of Prisons - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hmiprobation-news": { - "provider": "HM Inspectorate of Probation - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "home-office-media-blog": { - "provider": "Home Office Media Blog", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "independent-reviewer-terrorism-legislation": { - "provider": "Independent Reviewer of Terrorism Legislation a Reports", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "independent-reviewer-terrorism-legislation-html": { - "provider": "Independent Reviewer of Terrorism Legislation", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "joint-committee-human-rights-html": { - "provider": "Joint Committee on Human Rights", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T19:31:23.009Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 15, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T19:31:23.009Z", - "lastEmptyAt": "2026-04-23T18:02:43.923Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T19:31:23.009Z" - } - ], - "cooldownUntil": "2026-04-25T19:31:23.009Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-25T19:31:23.009Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "judiciary-rss-feeds-page": { - "provider": "Judiciary UK - RSS Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "judiciary-uk-announcements-feed": { - "provider": "Judiciary UK - Announcements Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "judiciary-uk-judgments-feed": { - "provider": "Judiciary UK - Judgments Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "judiciary-uk-news": { - "provider": "Judiciary of England and Wales a News", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-22T16:17:11.443Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 34, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T16:17:11.443Z", - "lastEmptyAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T11:44:44.316Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T16:17:11.443Z" - } - ], - "cooldownUntil": "2026-04-24T16:17:11.443Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T16:17:11.443Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "judiciary-uk-publications-feed": { - "provider": "Judiciary UK - Publications Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "lords-in-focus-rss": { - "provider": "Hansard Society - Despatch Box", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lords-library-notes-rss": { - "provider": "Hansard Society - Despatch Box", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ministry-of-defence-html": { - "provider": "Ministry of Defence", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ons-html": { - "provider": "Office for National Statistics", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "parliament-all-bills-rss": { - "provider": "Parliament - All Bills RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "parliament-private-bills-rss": { - "provider": "Parliament - Private Bills RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "parliament-public-bills-rss": { - "provider": "Parliament - Public Bills RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-ombudsman-current-investigations": { - "provider": "Police Ombudsman - Current Investigations", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "police-uk-crime-categories-2024-01": { - "provider": "Police.uk - Crime Categories (2024-01)", - "lane": "oversight", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-crimes-street-dates": { - "provider": "Police.uk - Street Crime Dataset Dates", - "lane": "oversight", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-outcomes-at-location-1609590": { - "provider": "Police Data UK - Outcomes At Location API Docs", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "police-uk-outcomes-for-crime-e11dade0": { - "provider": "Police.uk - Outcomes For Crime e11dade0", - "lane": "oversight", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-fai-determinations-rss": { - "provider": "Scottish Courts - Fatal Accident Inquiry Determinations RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-fai-hearings-rss": { - "provider": "Scottish Courts - Fatal Accident Inquiry Hearings RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-high-court-justiciary-judgments-rss": { - "provider": "Scottish Courts - High Court of Justiciary Judgments RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-high-court-practice-notes-rss": { - "provider": "Scottish Courts - High Court of Justiciary Practice Notes RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-judgments-rss": { - "provider": "Scottish Courts - Judgments RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-news-articles-rss": { - "provider": "Scottish Courts - News Articles RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-publications-rss": { - "provider": "Scottish Courts - Publications RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-rss-feeds-page": { - "provider": "Scottish Courts and Tribunals - RSS Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 65, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "scotcourts-sheriff-criminal-practice-notes-rss": { - "provider": "Scottish Courts - Sheriff Court Criminal Practice Notes RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scottish-government-justice-news": { - "provider": "Scottish Government - Justice and Safety", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "serious-fraud-office-news": { - "provider": "Serious Fraud Office a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 63, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-home-office": { - "provider": "UK Home Office a Announcements and Publications", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 101, - "emptyRuns": 4, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-19T18:05:04.781Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-iopc-news": { - "provider": "Independent Office for Police Conduct a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ncsc-news": { - "provider": "National Cyber Security Centre (UK) a News", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 5, - "successfulRuns": 105, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ncsc-threat-reports": { - "provider": "National Cyber Security Centre (UK) a Threat Reports", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-16T16:57:11.406Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T21:08:30.446Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-business-news": { - "provider": "UK Parliament - Business News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-defence-committee": { - "provider": "UK Parliament a Defence Select Committee", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 68, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-23T08:09:12.931Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-foreign-affairs-committee": { - "provider": "UK Parliament a Foreign Affairs Select Committee", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-home-affairs-committee": { - "provider": "UK Parliament a Home Affairs Committee (News)", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "cooldownUntil": "2026-04-26T08:17:25.806Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T08:17:25.806Z" - }, - "uk-parliament-isc": { - "provider": "UK Parliament a Intelligence and Security Committee (Reports & News)", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 6, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-justice-committee": { - "provider": "UK Parliament a Justice Select Committee", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "act-campaign": { - "provider": "ACT Awareness Campaign", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "cheshire-police-alert": { - "provider": "Cheshire Police Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ct-policing-prevent-programme": { - "provider": "Counter Terrorism Policing - Prevent", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-what-you-can-do": { - "provider": "Counter Terrorism Policing - What You Can Do", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dc-police-community-messaging": { - "provider": "Dorset and Cornwall Police - Community Messaging", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "devon-cornwall-alerts": { - "provider": "Devon and Cornwall Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gnet-research": { - "provider": "Global Network on Extremism & Technology (GNET) a Main Feed", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 95, - "emptyRuns": 6, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T06:01:25.327Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 97, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T12:00:25.806Z" - }, - "gov-uk-contest-strategy": { - "provider": "GOV.UK a CONTEST Counter-Terrorism Strategy", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-counter-extremism-commissioner": { - "provider": "Counter Extremism Commissioner a GOV.UK", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 77, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T19:01:30.233Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-prevent-strategy": { - "provider": "UK Home Office - Prevent duty guidance", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-report-terrorism": { - "provider": "GOV.UK - Report Terrorism", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gov-uk-terrorism-national-emergency": { - "provider": "GOV.UK - Terrorism National Emergency", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "icsr-kcl": { - "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "met-office-seasonal-advice": { - "provider": "Met Office - Seasonal Advice", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "mi5-terrorism-threat-levels": { - "provider": "MI5 - Terrorism Threat Levels", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "mi5-uk-threat-level": { - "provider": "MI5 (Security Service) a UK Threat Level", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "my-community-alert": { - "provider": "My Community Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-23T11:47:27.254Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 45, - "failedRuns": 2, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastEmptyAt": "2026-04-23T10:13:21.253Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T19:28:57.337Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "cooldownUntil": "2026-04-25T11:47:27.254Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T11:47:27.254Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "north-wales-community-alert": { - "provider": "North Wales Community Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T03:29:13.488Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 41, - "failedRuns": 4, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T03:29:13.488Z", - "lastEmptyAt": "2026-04-23T23:57:53.617Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 429", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-17T05:46:58.069Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-24T03:29:13.488Z" - } - ], - "cooldownUntil": "2026-04-26T03:29:13.488Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T03:29:13.488Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northamptonshire-talking": { - "provider": "Northamptonshire Talking", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "npsa-blog": { - "provider": "NPSA - Blog", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "npsa-blog-news": { - "provider": "NPSA - Blog News", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "npsa-national-protective-security-authority": { - "provider": "NPSA - Activity on GOV.UK", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "protectuk": { - "provider": "ProtectUK (NPSA) a Protective Security Guidance", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "south-yorkshire-police-alerts": { - "provider": "South Yorkshire Police Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "stay-in-the-know-home": { - "provider": "Stay In The Know - Community Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "stay-in-the-know-latest-alerts": { - "provider": "Stay In The Know - Latest Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 58, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ncsc-all-rss": { - "provider": "UK NCSC - All Updates RSS", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ncsc-homepage": { - "provider": "UK NCSC - Homepage", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-prevent-duty-guidance": { - "provider": "GOV.UK a Prevent Duty Guidance (Collection)", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-midlands-community-alerts": { - "provider": "WMNow - Community Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-community-alert": { - "provider": "West Yorkshire Community Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-proscribed-terrorist-orgs": { - "provider": "GOV.UK a Proscribed Terrorist Organisations", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hm-treasury-html": { - "provider": "HM Treasury", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ofsi-blog-home": { - "provider": "OFSI - Blog", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "otsi-blog-home": { - "provider": "OTSI - Blog", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 101, - "emptyRuns": 4, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-19T18:05:04.781Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ofsi-blog": { - "provider": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "lane": "sanctions", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 2, - "successfulRuns": 105, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, + "healthScore": 90, + "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-sanctions-list": { - "provider": "UK Sanctions List (FCDO) a Consolidated List (XML Service)", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ctc-sentinel": { - "provider": "Combating Terrorism Center at West Point - CTC Sentinel", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dhs-press-releases": { - "provider": "US Department of Homeland Security - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "dni-press-releases": { - "provider": "Office of the Director of National Intelligence - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "doj-nsd-press-releases": { - "provider": "U.S. Department of Justice - National Security Division Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "fbi-national-press-releases": { - "provider": "FBI - National Press Releases (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fbi-stories": { - "provider": "FBI - Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fbi-top-stories": { - "provider": "FBI - Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gw-program-extremism": { - "provider": "George Washington University - Program on Extremism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nsa-cybersecurity-news": { - "provider": "NSA - Cybersecurity Advisories & Guidance", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "rand-terrorism-topic": { - "provider": "RAND - Terrorism Topic Updates", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rewards-for-justice": { - "provider": "U.S. Department of State - Rewards for Justice", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "start-baad-database": { - "provider": "National Consortium for the Study of Terrorism (START) - Big Allied and Dangerous (BAAD) Database", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "start-center-publications": { - "provider": "START Center (UMD) - News & Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "state-dept-terrorism": { - "provider": "US State Department - Bureau of Counterterrorism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "cisa-cybersecurity-advisories": { - "provider": "CISA - Cybersecurity Alerts & Advisories", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 76, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "us-house-homeland-security": { - "provider": "US House Committee on Homeland Security - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "us-treasury-ofac-press-releases": { - "provider": "U.S. Treasury (OFAC) - Press Releases", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 79, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T15:11:26.228Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "us-treasury-ofac-recent-actions": { - "provider": "U.S. Treasury (OFAC) - Recent Actions", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" + "nextFetchAt": "2026-04-24T14:47:00.278Z" } } } diff --git a/source-quarantine.html b/source-quarantine.html index df1bcf8c..8ba8a1ae 100644 --- a/source-quarantine.html +++ b/source-quarantine.html @@ -269,13 +269,13 @@

Source Quarantine Review

- Generated: 2026-04-24T08:17:25.806Z - Low-health sources: 529 + Generated: 2026-04-24T11:19:00.278Z + Low-health sources: 0 Pending suggestions: 0 SLA: deprioritised, auto-recheck 24h+ - New this week: 231 - Avg health score: 3/100 - Avg time in quarantine: 153h + New this week: 0 + Avg health score: 0/100 + Avg time in quarantine: 0h Re-quarantine rate: 0%
@@ -455,7 +455,7 @@

Feed Audit

? 'Data mode: live API (restore enabled)' : 'Data mode: live read-only (restore unavailable)'; meta.innerHTML = [ - 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T08:17:25.806Z') + '', + 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T11:19:00.278Z') + '', 'Low-health sources: ' + escapeHtml(currentEntries.length) + '', 'Pending suggestions: ' + escapeHtml(currentSuggestions.length) + '', 'SLA: deprioritised, auto-recheck 24h+', From 17cd1b3dbc94dbd11a38e97b6ac0cb1f8332b0ff Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 11:20:59 +0000 Subject: [PATCH 02/25] fix: prioritize newer alerts in same freshness bucket Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/aa45d2a7-539f-4615-833a-9ba254f1ca9d Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2252800 -> 2252800 bytes data/quarantined-sources.json | 18772 ++++++++++++++++++++- data/source-remediation-sweep.json | 123 +- data/top-20-source-remediation.json | 58 +- live-alerts.json | 22784 +++++++++++++++++++++++++- shared/alert-view-model.mjs | 4 +- source-quarantine.html | 12 +- tests/decision-logic.test.mjs | 19 + 8 files changed, 41520 insertions(+), 252 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index 0c64837fb1118dff335b399288eff10ae8df1129..b13185dfa065db2f8edab7231a8e72c2aa5bdc03 100644 GIT binary patch delta 330 zcmWO0ze@sP9LI6LKKFQ@=Z`zHG_|^<9B$Gfp)eYRXi}jyvWUWv6wVBy<%US2rEs_@ z=hh5*YKw4)hM>_PusLXemW-`E)!I{N*1VgyLDEIA4G{|-OWbJ+S#pG zt$L-p-#lzs#|73aOGCPFc!o;OMuuL!e2%;5o~}hYOGC-oHuzG7wAAMhAx|)`YInMQBZ>YGt8@D5==P`3e%UvN0$P}f;(Ds*{|7^Hc%1+M delta 1915 zcmb7_&u6vx?J*kxnzk3jqjH(p0_B1krx1%tE3C~8ryM5?vd5qfrVkS>*fA?N}by}aG7>PFZs!_!2MpawiR831a9_G2nYyRidXN>@& zR)g#5JfvIcau7UTkW~sVHUx_iY zx2ahAj;QZp!&EDq7JYe=NqKvQX^KT%v+#jMC#IRj6C0{lR7-H9Nyn#{G+o(;5PHQ> zc0@RS^e96Cbn{V$Df}o5`{Taghir}eb?7JlqW?JX!w5UPJT!XdgYdWEs6YPw*kQnL zI}^1lk!*JE93O<0%lXLSa|3LwwA~47o-tts<5I^bv7JQ8jEEM*lB@r6*WRj$Lxp76_bd%N6=xxK< zeo9Ugl0@VEEj35~X8xoalgCulj@B+mWO;T#B2SjwmALA@ftEz?MUcb)SED`X2TrJ# zh@{f7Q&RWxy}7FL?dR9h^m6OJlNNuadXp?4Ex%v@KM(*|fCGX651avpfDjM{hJg`a z6c_`}0udkzoCC&z31AYK0;Yi&Fax~STz+x>=ikP8Zp$|k9bO4v58W7==l|go!MC_A z=zzC5+qtiYe7V^5?Ec)PY>pe0M(8?h;8MANe~YMGHKEVNa=N&&xKUQ5Ofr=&7t48l zXQ!&E*2C_ec~>{K%uRh)c=KS_R39lCo-86-Fa0PBLI}N3hu$n?2O%vM?5I7dLUKx{XaCuUCl$v49OjH^AVYiuZ*ZSTR(s0x$lJ_7KEXL*K=& z!OoRryma}K&=P!He-o+JI!Zj71%zhe+1&4Y%z5f*gIl|h4$^~tJ!QYJ=;AD=W6752e)9X&%4^d#=Hr}6)MpjNy?TuCU+QCz| LdF%Ft$Dw}#N)%RI diff --git a/data/quarantined-sources.json b/data/quarantined-sources.json index f8add00d..a6abc8f9 100644 --- a/data/quarantined-sources.json +++ b/data/quarantined-sources.json @@ -1,14 +1,18772 @@ { - "generatedAt": "2026-04-24T11:19:00.278Z", - "count": 0, + "generatedAt": "2026-04-24T08:17:25.806Z", + "count": 529, "metrics": { - "total": 0, - "newThisWeek": 0, - "avgTimeInQuarantineHours": 0, - "avgHealthScore": 0, + "total": 529, + "newThisWeek": 231, + "avgTimeInQuarantineHours": 153, + "avgHealthScore": 3, "reQuarantineRate": 0, "reQuarantined": 0, "restoredTotal": 0 }, - "sources": [] + "sources": [ + { + "id": "euaa-news", + "provider": "EUAA (EU Agency for Asylum) - Press Releases", + "endpoint": "https://euaa.europa.eu/news-events/press-releases", + "kind": "html", + "lane": "border", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eulisa-news-events", + "provider": "eu-LISA - News and Events (RSS)", + "endpoint": "https://www.eulisa.europa.eu/news-and-events.rss", + "kind": "rss", + "lane": "border", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "austria-interior-ministry-news", + "provider": "Austrian Interior Ministry - News", + "endpoint": "https://www.bmi.gv.at/news.aspx", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 503", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-24T08:17:25.806Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T08:17:25.806Z", + "lastFailureAt": "2026-04-24T08:17:25.806Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "austria-interior-ministry-rss-index", + "provider": "Austrian Interior Ministry - RSS Index", + "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 503", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-24T08:17:25.806Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T08:17:25.806Z", + "lastFailureAt": "2026-04-24T08:17:25.806Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "europol-news-rss", + "provider": "Europol - Newsroom (RSS)", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news", + "kind": "rss", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "dutch-police-rss-index", + "provider": "Politie.nl - RSS", + "endpoint": "https://www.politie.nl/rss", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "mossos-news", + "provider": "Mossos d'Esquadra - News", + "endpoint": "https://mossos.gencat.cat/ca/actualitat/", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eppo-news-node-7", + "provider": "European Public Prosecutor's Office - News (RSS)", + "endpoint": "https://www.eppo.europa.eu/en/news.xml", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-commission-counter-terrorism-measures-2026", + "provider": "European Commission - Counter Terrorism Measures 2026", + "endpoint": "https://commission.europa.eu/news-and-media/news/commission-proposes-new-measures-prevent-and-counter-terrorism-2026-02-26_en", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-commission-home-affairs-topic", + "provider": "European Commission - Home Affairs", + "endpoint": "https://commission.europa.eu/topics/home-affairs_en", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-council-jha-register-rss", + "provider": "Council of the EU - Latest Documents RSS", + "endpoint": "https://www.consilium.europa.eu/en/register/rss/LD.xml", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-council-press-releases", + "provider": "Council of the European Union a Press Releases (RSS)", + "endpoint": "https://www.consilium.europa.eu/en/rss/pressreleases.ashx", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-council-press-releases-html", + "provider": "Council of the EU - Press Releases", + "endpoint": "https://www.consilium.europa.eu/en/press/press-releases/", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-eppo-news", + "provider": "European Public Prosecutor's Office - News", + "endpoint": "https://www.eppo.europa.eu/en/news", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-home-affairs-news", + "provider": "European Commission a Home Affairs News", + "endpoint": "https://home-affairs.ec.europa.eu/news_en", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-olaf-news", + "provider": "OLAF (EU Anti-Fraud Office) a News", + "endpoint": "https://anti-fraud.ec.europa.eu/media-corner/news_en", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-security-union-strategy", + "provider": "European Commission a Security Union Strategy", + "endpoint": "https://home-affairs.ec.europa.eu/policies/internal-security_en", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "europarl-committee-libe", + "provider": "European Parliament - LIBE Press Releases", + "endpoint": "https://www.europarl.europa.eu/committees/en/libe/home/press-releases", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "europarl-committee-sede", + "provider": "European Parliament - SEDE Press Releases", + "endpoint": "https://www.europarl.europa.eu/committees/en/sede/home/press-releases", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "europarl-pressreleases-committees", + "provider": "European Parliament a Press Releases (Committees) (RSS)", + "endpoint": "https://www.europarl.europa.eu/rss/doc/press-releases-committees/en.xml", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "netherlands-police-news", + "provider": "Dutch National Police - News (EN)", + "endpoint": "https://www.politie.nl/en/news", + "kind": "html", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "echr-press-releases-rss", + "provider": "European Court of Human Rights - Press Releases RSS", + "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echrengpress&query=contentsitename%3AECHR+AND+doctype%3DPR&ranking. Model. Id=11111111-0000-0000-0000-000000000000&sort=kpdate+Descending&start=0", + "kind": "rss", + "lane": "oversight", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "french-justice-ministry-news", + "provider": "French Ministry of Justice - News", + "endpoint": "https://www.justice.gouv.fr/actualites", + "kind": "html", + "lane": "oversight", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "dsn-at-english", + "provider": "DSN Austria - Aktuelles", + "endpoint": "https://www.dsn.gv.at/news.html", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "sapo-se-english", + "provider": "Swedish Security Service English news", + "endpoint": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/press-room/news.html", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "interpol-news-events", + "provider": "INTERPOL a News and Events", + "endpoint": "https://www.interpol.int/News-and-Events", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "osce-press-releases", + "provider": "OSCE a Press Releases", + "endpoint": "https://www.osce.org/press-releases", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "unoct-news", + "provider": "UN Office of Counter-Terrorism (UNOCT) - News", + "endpoint": "https://www.un.org/counterterrorism/news", + "kind": "html", + "lane": "oversight", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "bexley-council-news", + "provider": "Bexley Council a News", + "endpoint": "https://www.bexley.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "brent-council-news", + "provider": "Brent Council a News", + "endpoint": "https://www.brent.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "camden-council-news", + "provider": "Camden Council a News", + "endpoint": "https://news.camden.gov.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "chelsea-westminster-news", + "provider": "Chelsea and Westminster Hospital NHS Foundation Trust a News", + "endpoint": "https://www.chelwest.nhs.uk/about-us/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "croydon-council-news", + "provider": "Croydon Council a News", + "endpoint": "https://news.croydon.gov.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gosh-news", + "provider": "Great Ormond Street Hospital a News", + "endpoint": "https://www.gosh.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "guys-st-thomas-news", + "provider": "Guy's and St Thomas' NHS Foundation Trust a News", + "endpoint": "https://www.guysandstthomas.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "hackney-council-news", + "provider": "Hackney Council a News", + "endpoint": "https://news.hackney.gov.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "havering-council-news", + "provider": "Havering Council a News", + "endpoint": "https://www.havering.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "hillingdon-council-news", + "provider": "Hillingdon Council a News", + "endpoint": "https://www.hillingdon.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "hounslow-council-news", + "provider": "Hounslow Council a News", + "endpoint": "https://www.hounslow.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "islington-council-news", + "provider": "Islington Council a News", + "endpoint": "https://www.islington.media/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "kings-college-hospital-news", + "provider": "King's College Hospital NHS Foundation Trust a News", + "endpoint": "https://www.kch.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "lambeth-council-news", + "provider": "Lambeth Council a News", + "endpoint": "https://love.lambeth.gov.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "lnwh-news", + "provider": "London North West University Healthcare NHS Trust a News", + "endpoint": "https://www.lnwh.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "london-gov-rss-80603", + "provider": "Greater London Authority a RSS Feed 80603", + "endpoint": "https://www.london.gov.uk/rss-feeds/80603", + "kind": "rss", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "london-gov-rss-80632", + "provider": "Greater London Authority a RSS Feed 80632", + "endpoint": "https://www.london.gov.uk/rss-feeds/80632", + "kind": "rss", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "met-police-the-met-tag", + "provider": "Metropolitan Police - The Met Tag", + "endpoint": "https://news.met.police.uk/news/tag/the-met", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "moorfields-news", + "provider": "Moorfields Eye Hospital NHS Foundation Trust a News", + "endpoint": "https://www.moorfields.nhs.uk/about-us/news-and-blogs/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "nelft-news", + "provider": "North East London NHS Foundation Trust a News", + "endpoint": "https://www.nelft.nhs.uk/news-events/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "newham-council-news", + "provider": "Newham Council a News", + "endpoint": "https://www.newham.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "nhs-london-nwl-news", + "provider": "NHS North West London a News", + "endpoint": "https://www.nwlondonicb.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "oxleas-news", + "provider": "Oxleas NHS Foundation Trust a News", + "endpoint": "https://oxleas.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "redbridge-council-news", + "provider": "Redbridge Council a News", + "endpoint": "https://www.redbridge.gov.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "st-georges-news", + "provider": "St George's University Hospitals NHS Foundation Trust a News", + "endpoint": "https://www.stgeorges.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "sutton-council-news", + "provider": "Sutton Council a News", + "endpoint": "https://www.sutton.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "swlstg-news", + "provider": "South West London and St George's Mental Health NHS Trust a News", + "endpoint": "https://www.swlstg.nhs.uk/latest-news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "waltham-forest-council-news", + "provider": "Waltham Forest Council a News", + "endpoint": "https://www.walthamforest.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-fcdo-travel-advice", + "provider": "FCDO a Foreign Travel Advice Index", + "endpoint": "https://www.gov.uk/foreign-travel-advice", + "kind": "html", + "lane": "border", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "uk-border-force", + "provider": "Border Force (UK) a Announcements and Publications", + "endpoint": "https://www.gov.uk/government/organisations/border-force", + "kind": "html", + "lane": "border", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "uk-ukvi", + "provider": "UK Visas and Immigration a Announcements and Publications", + "endpoint": "https://www.gov.uk/government/organisations/uk-visas-and-immigration", + "kind": "html", + "lane": "border", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-terrorism-search", + "provider": "GOV.UK Search - Terrorism", + "endpoint": "https://www.gov.uk/search/all?keywords=terrorism", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "npcc-releases", + "provider": "National Police Chiefs' Council - Releases", + "endpoint": "https://news.npcc.police.uk/releases/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "police-uk-stops-force-leicestershire", + "provider": "Police.uk - Force Stops (Leicestershire)", + "endpoint": "https://data.police.uk/api/stops-force?force=leicestershire", + "kind": "json", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "police-uk-stops-street-leicester", + "provider": "Police.uk - Street Stops Around Leicester", + "endpoint": "https://data.police.uk/api/stops-street?lat=52.629729&lng=-1.131592", + "kind": "json", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "foreign-office-blogs", + "provider": "Foreign Office Blogs", + "endpoint": "https://blogs.fco.gov.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "avon-and-somerset-police-news-html", + "provider": "Avon and Somerset Police - News", + "endpoint": "https://www.avonandsomerset.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "avon-somerset-police-news", + "provider": "Avon & Somerset Police a News", + "endpoint": "https://www.avonandsomerset.police.uk/newsroom/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "psni-latest-news", + "provider": "Police Service of Northern Ireland - Latest News", + "endpoint": "https://www.psni.police.uk/latest-news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-yorkshire-police-all-rss", + "provider": "West Yorkshire Police - All Feed", + "endpoint": "https://www.westyorkshire.police.uk/news/all/feed", + "kind": "rss", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-yorkshire-police-appeals-rss", + "provider": "West Yorkshire Police - Appeals Feed", + "endpoint": "https://www.westyorkshire.police.uk/news/appeals/feed", + "kind": "rss", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-yorkshire-police-news-appeals", + "provider": "West Yorkshire Police - News Appeals", + "endpoint": "https://www.westyorkshirepolice.co.uk/news-appeals", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-yorkshire-police-news-rss", + "provider": "West Yorkshire Police - News Feed", + "endpoint": "https://www.westyorkshire.police.uk/news/feed", + "kind": "rss", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-yorkshire-police-releases-rss", + "provider": "West Yorkshire Police - Releases Feed", + "endpoint": "https://www.westyorkshire.police.uk/news/releases/feed", + "kind": "rss", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "attorney-generals-office-html", + "provider": "Attorney General's Office", + "endpoint": "https://www.gov.uk/government/organisations/attorney-generals-office", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "cabinet-office-html", + "provider": "Cabinet Office", + "endpoint": "https://www.gov.uk/government/organisations/cabinet-office", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "crown-office-news", + "provider": "Crown Office and Procurator Fiscal Service - News", + "endpoint": "https://www.copfs.gov.uk/about-copfs/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "echr-uk-grand-chamber-rss", + "provider": "European Court of Human Rights - UK Grand Chamber RSS", + "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echreng&query=%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28+contentsitename%3AECHR+AND+%28NOT+%28doctype%3DPR+OR+doctype%3DHFCOMOLD+OR+doctype%3DHECOMOLD%29%29+AND+%28%28respondent%3D%22GBR%22%29%29+AND+%28%28documentcollectionid%3D%22GRANDCHAMBER%22%29%29%29+XRANK%28cb%3D14%29+doctypebranch%3AGRANDCHAMBER%29+XRANK%28cb%3D13%29+doctypebranch%3ADECGRANDCHAMBER%29+XRANK%28cb%3D12%29+doctypebranch%3ACHAMBER%29+XRANK%28cb%3D11%29+doctypebranch%3AADMISSIBILITY%29+XRANK%28cb%3D10%29+doctypebranch%3ACOMMITTEE%29+XRANK%28cb%3D9%29+doctypebranch%3AADMISSIBILITYCOM%29+XRANK%28cb%3D8%29+doctypebranch%3ADECCOMMISSION%29+XRANK%28cb%3D7%29+doctypebranch%3ACOMMUNICATEDCASES%29+XRANK%28cb%3D6%29+doctypebranch%3ACLIN%29+doctypebranch%3AADVISORYOPINIONS%29+doctypebranch%3AREPORTS%29+doctypebranch%3AEXECUTION%29+doctypebranch%3AMERITS%29+doctypebranch%3ASCREENINGPANEL%29+XRANK%28cb%3D4%29+importance%3A1%29+XRANK%28cb%3D3%29+importance%3A2%29+XRANK%28cb%3D2%29+importance%3A3%29+XRANK%28cb%3D1%29+importance%3A4%29+XRANK%28cb%3D2%29+languageisocode%3AENG%29+XRANK%28cb%3D1%29+languageisocode%3AFRE&ranking. Model. Id=4180000c-8692-45ca-ad63-74bc4163871b&sort=kpdate+Descending&start=0", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "extremism-commission-blog", + "provider": "Commission for Countering Extremism - Blog", + "endpoint": "https://extremismcommission.blog.gov.uk/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "fcdo-html", + "provider": "Foreign, Commonwealth & Development Office", + "endpoint": "https://www.gov.uk/government/organisations/foreign-commonwealth-development-office", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-scot-access-to-justice-latest", + "provider": "Scottish Government - Access to Justice Latest", + "endpoint": "https://www.gov.scot/policies/access-to-justice/latest/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-cabinet-office-atom", + "provider": "Cabinet Office a GOV.UK Atom Feed", + "endpoint": "https://www.gov.uk/government/organisations/cabinet-office.atom", + "kind": "atom", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-hmcts", + "provider": "HMCTS a Courts and Tribunals Announcements", + "endpoint": "https://www.gov.uk/government/organisations/hm-courts-and-tribunals-service", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-home-office-atom", + "provider": "UK Home Office a Atom Feed", + "endpoint": "https://www.gov.uk/government/organisations/home-office.atom", + "kind": "atom", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-ipco", + "provider": "Investigatory Powers Commissioner's Office a GOV.UK", + "endpoint": "https://www.ipco.org.uk/publications/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-mod-atom", + "provider": "Ministry of Defence a GOV.UK Atom Feed", + "endpoint": "https://www.gov.uk/government/organisations/ministry-of-defence.atom", + "kind": "atom", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-moj-atom", + "provider": "Ministry of Justice a GOV.UK Atom Feed", + "endpoint": "https://www.gov.uk/government/organisations/ministry-of-justice.atom", + "kind": "atom", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-news-and-communications-atom", + "provider": "GOV.UK - News and Communications Atom", + "endpoint": "https://www.gov.uk/search/news-and-communications.atom", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "hmiprisons-news", + "provider": "HM Inspectorate of Prisons - News", + "endpoint": "https://hmiprisons.justiceinspectorates.gov.uk/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "hmiprobation-news", + "provider": "HM Inspectorate of Probation - News", + "endpoint": "https://hmiprobation.justiceinspectorates.gov.uk/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "home-office-media-blog", + "provider": "Home Office Media Blog", + "endpoint": "https://homeofficemedia.blog.gov.uk/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "independent-reviewer-terrorism-legislation", + "provider": "Independent Reviewer of Terrorism Legislation a Reports", + "endpoint": "https://terrorismlegislationreviewer.independent.gov.uk/category/reports/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "independent-reviewer-terrorism-legislation-html", + "provider": "Independent Reviewer of Terrorism Legislation", + "endpoint": "https://www.gov.uk/government/organisations/independent-reviewer-of-terrorism-legislation", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "judiciary-rss-feeds-page", + "provider": "Judiciary UK - RSS Feeds", + "endpoint": "https://www.judiciary.uk/rss-feeds/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "judiciary-uk-announcements-feed", + "provider": "Judiciary UK - Announcements Feed", + "endpoint": "https://www.judiciary.uk/announcements/feed/", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "judiciary-uk-judgments-feed", + "provider": "Judiciary UK - Judgments Feed", + "endpoint": "https://www.judiciary.uk/judgments/feed/", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "judiciary-uk-publications-feed", + "provider": "Judiciary UK - Publications Feed", + "endpoint": "https://www.judiciary.uk/publications/feed/", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "ministry-of-defence-html", + "provider": "Ministry of Defence", + "endpoint": "https://www.gov.uk/government/organisations/ministry-of-defence", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "ons-html", + "provider": "Office for National Statistics", + "endpoint": "https://www.gov.uk/government/organisations/office-for-national-statistics", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "parliament-all-bills-rss", + "provider": "Parliament - All Bills RSS", + "endpoint": "https://bills.parliament.uk/rss/allbills.rss", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "parliament-private-bills-rss", + "provider": "Parliament - Private Bills RSS", + "endpoint": "https://bills.parliament.uk/rss/privatebills.rss", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "parliament-public-bills-rss", + "provider": "Parliament - Public Bills RSS", + "endpoint": "https://bills.parliament.uk/rss/publicbills.rss", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "police-uk-crime-categories-2024-01", + "provider": "Police.uk - Crime Categories (2024-01)", + "endpoint": "https://data.police.uk/api/crime-categories?date=2024-01", + "kind": "json", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "police-uk-crimes-street-dates", + "provider": "Police.uk - Street Crime Dataset Dates", + "endpoint": "https://data.police.uk/api/crimes-street-dates", + "kind": "json", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "police-uk-outcomes-for-crime-e11dade0", + "provider": "Police.uk - Outcomes For Crime e11dade0", + "endpoint": "https://data.police.uk/api/outcomes-for-crime/e11dade0a92a912d12329b9b2abb856ac9520434ad6845c30f503e9901d140f1", + "kind": "json", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-fai-determinations-rss", + "provider": "Scottish Courts - Fatal Accident Inquiry Determinations RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Fatal. Accident. Inquiry. Determinations", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-fai-hearings-rss", + "provider": "Scottish Courts - Fatal Accident Inquiry Hearings RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Fatal. Accident. Inquiry. Hearings", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-high-court-justiciary-judgments-rss", + "provider": "Scottish Courts - High Court of Justiciary Judgments RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Judgments/?Court=High+Court+of+Justiciary", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-high-court-practice-notes-rss", + "provider": "Scottish Courts - High Court of Justiciary Practice Notes RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Practice. Notes. And. Directions/?Category=High+Court+of+Justiciary", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-judgments-rss", + "provider": "Scottish Courts - Judgments RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Judgments", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-news-articles-rss", + "provider": "Scottish Courts - News Articles RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/News. Articles", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-publications-rss", + "provider": "Scottish Courts - Publications RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Publications", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-sheriff-criminal-practice-notes-rss", + "provider": "Scottish Courts - Sheriff Court Criminal Practice Notes RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Practice. Notes. And. Directions/?Category=Sheriff+Court+Criminal", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "uk-iopc-news", + "provider": "Independent Office for Police Conduct a News", + "endpoint": "https://www.policeconduct.gov.uk/news", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "uk-parliament-home-affairs-committee", + "provider": "UK Parliament a Home Affairs Committee (News)", + "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-24T08:17:25.806Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T08:17:25.806Z", + "lastFailureAt": "2026-04-24T08:17:25.806Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "act-campaign", + "provider": "ACT Awareness Campaign", + "endpoint": "https://act.campaign.gov.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-contest-strategy", + "provider": "GOV.UK a CONTEST Counter-Terrorism Strategy", + "endpoint": "https://www.gov.uk/government/collections/contest", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-prevent-strategy", + "provider": "UK Home Office - Prevent duty guidance", + "endpoint": "https://www.gov.uk/government/publications/prevent-duty-guidance", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "met-office-seasonal-advice", + "provider": "Met Office - Seasonal Advice", + "endpoint": "https://www.metoffice.gov.uk/weather/warnings-and-advice/seasonal-advice", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "mi5-uk-threat-level", + "provider": "MI5 (Security Service) a UK Threat Level", + "endpoint": "https://www.mi5.gov.uk/UKThreat. Level/UKThreat. Level.xml", + "kind": "rss", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "npsa-national-protective-security-authority", + "provider": "NPSA - Activity on GOV.UK", + "endpoint": "https://www.gov.uk/government/organisations/national-protective-security-authority.atom", + "kind": "rss", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "uk-ncsc-all-rss", + "provider": "UK NCSC - All Updates RSS", + "endpoint": "https://www.ncsc.gov.uk/api/1/services/v1/all-rss-feed.xml", + "kind": "rss", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "uk-prevent-duty-guidance", + "provider": "GOV.UK a Prevent Duty Guidance (Collection)", + "endpoint": "https://www.gov.uk/government/collections/prevent-duty-guidance", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-proscribed-terrorist-orgs", + "provider": "GOV.UK a Proscribed Terrorist Organisations", + "endpoint": "https://www.gov.uk/government/publications/proscribed-terror-groups-or-organisations--2", + "kind": "html", + "lane": "sanctions", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "hm-treasury-html", + "provider": "HM Treasury", + "endpoint": "https://www.gov.uk/government/organisations/hm-treasury", + "kind": "html", + "lane": "sanctions", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "ofsi-blog-home", + "provider": "OFSI - Blog", + "endpoint": "https://ofsi.blog.gov.uk/", + "kind": "html", + "lane": "sanctions", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "dhs-press-releases", + "provider": "US Department of Homeland Security - News", + "endpoint": "https://www.dhs.gov/news", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "nsa-cybersecurity-news", + "provider": "NSA - Cybersecurity Advisories & Guidance", + "endpoint": "https://www.nsa.gov/Press-Room/Press-Releases-Statements/", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "rewards-for-justice", + "provider": "U.S. Department of State - Rewards for Justice", + "endpoint": "https://rewardsforjustice.net/rewards/", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "state-dept-terrorism", + "provider": "US State Department - Bureau of Counterterrorism", + "endpoint": "https://www.state.gov/bureaus-offices/under-secretary-for-civilian-security-democracy-and-human-rights/bureau-of-counterterrorism/", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "cisa-cybersecurity-advisories", + "provider": "CISA - Cybersecurity Alerts & Advisories", + "endpoint": "https://www.cisa.gov/news-events/cybersecurity-advisories", + "kind": "html", + "lane": "oversight", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "us-treasury-ofac-recent-actions", + "provider": "U.S. Treasury (OFAC) - Recent Actions", + "endpoint": "https://ofac.treasury.gov/recent-actions", + "kind": "html", + "lane": "sanctions", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "a-lady-in-london", + "provider": "A Lady in London", + "endpoint": "https://www.aladyinlondon.com/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-24T03:29:13.488Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T03:29:13.488Z", + "lastFailureAt": "2026-04-24T03:29:13.488Z", + "lastCheckedAt": "2026-04-24T03:29:13.488Z" + }, + { + "id": "north-wales-community-alert", + "provider": "North Wales Community Alert", + "endpoint": "https://www.northwalescommunityalert.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 429", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-17T05:46:58.069Z" + }, + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-20T23:15:54.554Z" + }, + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-24T03:29:13.488Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T03:29:13.488Z", + "lastFailureAt": "2026-04-24T03:29:13.488Z", + "lastCheckedAt": "2026-04-24T03:29:13.488Z" + }, + { + "id": "eurojust-press-releases", + "provider": "Eurojust - Press Releases", + "endpoint": "https://www.eurojust.europa.eu/news/press-releases", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "eu-council-jha-meetings", + "provider": "Council of the EU - JHA Press Releases", + "endpoint": "https://www.consilium.europa.eu/en/press/press-releases/?cc%5B%5D=24", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "norway-pst-news", + "provider": "Norwegian Government - News and Press Releases", + "endpoint": "https://www.regjeringen.no/en/whats-new/news-and-press-releases/id4/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "ocam-be-english", + "provider": "CUTA (Belgium) threat analysis", + "endpoint": "https://cuta.belgium.be/", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T22:54:57.851Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "everything-zany", + "provider": "Everything Zany", + "endpoint": "https://everythingzany.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "manic-mum-life", + "provider": "Manic Mum Life", + "endpoint": "https://www.manic-mumdays.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "really-ree", + "provider": "Really Ree", + "endpoint": "https://reallyree.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "my-community-alert", + "provider": "My Community Alert", + "endpoint": "https://www.mycommunityalert.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-18T19:28:57.337Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T11:47:27.254Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T11:47:27.254Z", + "lastFailureAt": "2026-04-23T11:47:27.254Z", + "lastCheckedAt": "2026-04-23T11:47:27.254Z" + }, + { + "id": "uk-parliament-defence-committee", + "provider": "UK Parliament a Defence Select Committee", + "endpoint": "https://committees.parliament.uk/committee/24/defence-committee/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "curia-press-rss-en", + "provider": "Court of Justice of the European Union - RSS (EN/FR)", + "endpoint": "https://curia.europa.eu/site/rss.jsp?lang=en&second. Lang=fr", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + }, + { + "id": "eu-cellar-rss-atom", + "provider": "Publications Office of the European Union (CELLAR) a RSS/Atom Feeds", + "endpoint": "https://op.europa.eu/en/web/cellar/cellar-data/rss-and-atom-feeds", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + }, + { + "id": "richmond-council-news", + "provider": "Richmond Council a News", + "endpoint": "https://www.richmond.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + }, + { + "id": "wandsworth-council-news", + "provider": "Wandsworth Council a News", + "endpoint": "https://www.wandsworth.gov.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + }, + { + "id": "scotcourts-rss-feeds-page", + "provider": "Scottish Courts and Tribunals - RSS Feeds", + "endpoint": "https://www.scotcourts.gov.uk/rss-feeds/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + }, + { + "id": "london-resilience", + "provider": "Resilience First - Latest Updates", + "endpoint": "https://www.london.gov.uk/programmes-strategies/fire-and-city-resilience/london-resilience-partnership", + "kind": "html", + "lane": "prevention", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 2, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T23:15:54.554Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-22T23:56:26.571Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T23:56:26.571Z", + "lastFailureAt": "2026-04-22T23:56:26.571Z", + "lastCheckedAt": "2026-04-22T23:56:26.571Z" + }, + { + "id": "echr-key-judgments-rss", + "provider": "European Court of Human Rights - Key Judgments RSS", + "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echreng&query=%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28+contentsitename%3AECHR+AND+%28NOT+%28doctype%3DPR+OR+doctype%3DHFCOMOLD+OR+doctype%3DHECOMOLD%29%29+AND+%28%28importance%3D%221%22%29+OR+%28importance%3D%222%22%29+OR+%28importance%3D%223%22%29%29+AND+%28%28documentcollectionid%3D%22GRANDCHAMBER%22%29+OR+%28documentcollectionid%3D%22CHAMBER%22%29+OR+%28documentcollectionid%3D%22DECGRANDCHAMBER%22%29+OR+%28documentcollectionid%3D%22ADMISSIBILITY%22%29%29%29+XRANK%28cb%3D14%29+doctypebranch%3AGRANDCHAMBER%29+XRANK%28cb%3D13%29+doctypebranch%3ADECGRANDCHAMBER%29+XRANK%28cb%3D12%29+doctypebranch%3ACHAMBER%29+XRANK%28cb%3D11%29+doctypebranch%3AADMISSIBILITY%29+XRANK%28cb%3D10%29+doctypebranch%3ACOMMITTEE%29+XRANK%28cb%3D9%29+doctypebranch%3AADMISSIBILITYCOM%29+XRANK%28cb%3D8%29+doctypebranch%3ADECCOMMISSION%29+XRANK%28cb%3D7%29+doctypebranch%3ACOMMUNICATEDCASES%29+XRANK%28cb%3D6%29+doctypebranch%3ACLIN%29+XRANK%28cb%3D5%29+doctypebranch%3AADVISORYOPINIONS%29+XRANK%28cb%3D4%29+doctypebranch%3AREPORTS%29+XRANK%28cb%3D3%29+doctypebranch%3AEXECUTION%29+XRANK%28cb%3D2%29+doctypebranch%3AMERITS%29+XRANK%28cb%3D1%29+doctypebranch%3ASCREENINGPANEL%29+XRANK%28cb%3D4%29+importance%3A1%29+XRANK%28cb%3D3%29+importance%3A2%29+XRANK%28cb%3D2%29+importance%3A3%29+XRANK%28cb%3D1%29+importance%3A4%29+XRANK%28cb%3D2%29+languageisocode%3AENG%29+XRANK%28cb%3D1%29+languageisocode%3AFRE&ranking. Model. Id=4180000c-8692-45ca-ad63-74bc4163871b&sort=kpdate+Descending&start=0", + "kind": "rss", + "lane": "oversight", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 400", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T17:39:27.641Z", + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastCheckedAt": "2026-04-22T17:39:27.641Z" + }, + { + "id": "judiciary-uk-news", + "provider": "Judiciary of England and Wales a News", + "endpoint": "https://www.judiciary.uk/feed/", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T11:44:44.316Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T16:17:11.443Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T16:17:11.443Z", + "lastFailureAt": "2026-04-22T16:17:11.443Z", + "lastCheckedAt": "2026-04-22T16:17:11.443Z" + }, + { + "id": "uclh-news", + "provider": "University College London Hospitals a News", + "endpoint": "https://www.uclh.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "west-yorkshire-police-coroner-appeals-rss", + "provider": "West Yorkshire Police - Coroner Appeals Feed", + "endpoint": "https://www.westyorkshire.police.uk/news/coroner-appeals/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "thank-you-for-the-days", + "provider": "Thank you for the days", + "endpoint": "https://thankyouforthedays.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 2, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "west-yorkshire-police-news", + "provider": "West Yorkshire Police a News", + "endpoint": "https://www.westyorkshire.police.uk/news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nhs-london-nel-news", + "provider": "NHS North East London a News", + "endpoint": "https://northeastlondon.icb.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T10:07:46.576Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-28T10:07:46.576Z", + "lastFailureAt": "2026-04-21T10:07:46.576Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "kingston-council-news", + "provider": "Kingston Council a News", + "endpoint": "https://www.kingston.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-28T08:24:19.478Z", + "lastFailureAt": "2026-04-21T08:24:19.478Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "merton-council-news", + "provider": "Merton Council a News", + "endpoint": "https://www.merton.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-28T08:24:19.478Z", + "lastFailureAt": "2026-04-21T08:24:19.478Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "cambridge-news", + "provider": "Cambridge News", + "endpoint": "https://www.cambridge-news.co.uk/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-20T17:16:47.386Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T17:16:47.386Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastCheckedAt": "2026-04-23T22:53:56.180Z" + }, + { + "id": "deadline-news", + "provider": "Deadline News", + "endpoint": "https://www.deadlinenews.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 20 after repeated failures", + "quarantinedAt": "2026-04-20T17:16:47.386Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 500", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T17:16:47.386Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastCheckedAt": "2026-04-24T03:29:13.488Z" + }, + { + "id": "independent-top-stories", + "provider": "The Independent - Top Stories", + "endpoint": "https://www.independent.co.uk/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T17:16:47.386Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastCheckedAt": "2026-04-23T20:18:46.625Z" + }, + { + "id": "fmcg-gurus", + "provider": "FMCG Gurus", + "endpoint": "https://fmcggurus.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-20T17:16:47.386Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T17:16:47.386Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "portugal-pj-news", + "provider": "Policia Judiciaria Portugal - News", + "endpoint": "https://www.policiajudiciaria.pt/noticias/", + "kind": "html", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T19:18:33.309Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T15:59:44.503Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T15:59:44.503Z", + "lastFailureAt": "2026-04-20T15:59:44.503Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "guardian-uk-top-stories", + "provider": "The Guardian - UK Top Stories", + "endpoint": "https://www.theguardian.com/uk/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-20T06:30:13.977Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "consecutiveFailures": 3, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T23:43:16.267Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "silly-old-sod", + "provider": "Silly Old Sod", + "endpoint": "https://www.sillyoldsod.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent timeouts — endpoint may be overloaded or unreachable", + "quarantinedAt": "2026-04-20T04:05:33.139Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-20T04:05:33.139Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T04:05:33.139Z", + "lastFailureAt": "2026-04-20T04:05:33.139Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "serious-fraud-office-news", + "provider": "Serious Fraud Office a News", + "endpoint": "https://www.gov.uk/search/news-and-communications?organisations%5B%5D=serious-fraud-office&parent=serious-fraud-office", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T04:05:33.139Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T04:05:33.139Z", + "lastFailureAt": "2026-04-20T04:05:33.139Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "cheshire-police-alert", + "provider": "Cheshire Police Alert", + "endpoint": "https://www.cheshirepolicealert.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "dc-police-community-messaging", + "provider": "Dorset and Cornwall Police - Community Messaging", + "endpoint": "https://community-messaging.dc.police.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "devon-cornwall-alerts", + "provider": "Devon and Cornwall Alerts", + "endpoint": "https://alerts.dc.police.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "south-yorkshire-police-alerts", + "provider": "South Yorkshire Police Alerts", + "endpoint": "https://www.sypalerts.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "stay-in-the-know-home", + "provider": "Stay In The Know - Community Alerts", + "endpoint": "https://www.stayintheknow.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "stay-in-the-know-latest-alerts", + "provider": "Stay In The Know - Latest Alerts", + "endpoint": "https://www.stayintheknow.co.uk/Content/Pages/Latest-Alerts", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-midlands-community-alerts", + "provider": "WMNow - Community Alerts", + "endpoint": "https://www.wmnow.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-yorkshire-community-alert", + "provider": "West Yorkshire Community Alert", + "endpoint": "https://www.wypcommunityalert.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "france24-europe-rss", + "provider": "France 24 a Europe (RSS)", + "endpoint": "https://www.france24.com/en/europe/rss", + "kind": "rss", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-19T16:03:49.134Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T11:15:29.208Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T16:03:49.134Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T06:12:01.477Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T05:47:56.833Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T05:47:56.833Z", + "lastFailureAt": "2026-04-23T05:47:56.833Z", + "lastCheckedAt": "2026-04-23T05:47:56.833Z" + }, + { + "id": "bbc-news-uk-politics-legacy", + "provider": "BBC News a UK Politics (Legacy RSS)", + "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/uk_politics/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-19T03:30:54.684Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T03:30:54.684Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T15:59:44.503Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "rusi-home", + "provider": "RUSI", + "endpoint": "https://www.rusi.org/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 20 after repeated failures", + "quarantinedAt": "2026-04-19T03:30:54.684Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T03:30:54.684Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T03:30:54.684Z", + "lastFailureAt": "2026-04-19T03:30:54.684Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "gnet-youth-rss", + "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", + "endpoint": "https://gnet-research.org/tag/youth/feed/", + "kind": "rss", + "lane": "prevention", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T22:00:46.520Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T11:07:28.674Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T12:15:37.169Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T22:00:46.520Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T17:16:47.386Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T17:39:27.641Z", + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastCheckedAt": "2026-04-22T17:39:27.641Z" + }, + { + "id": "ealing-council-news", + "provider": "Ealing Council a News", + "endpoint": "https://www.ealing.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T21:09:53.488Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-25T21:09:53.488Z", + "lastFailureAt": "2026-04-18T21:09:53.488Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-ejustice-news-rss", + "provider": "European e-Justice - News RSS", + "endpoint": "https://e-justice.europa.eu/rss/news_en", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-18T13:27:18.679Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-25T13:27:18.679Z", + "lastFailureAt": "2026-04-18T13:27:18.679Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "just-security", + "provider": "Just Security a Law, Rights & National Security", + "endpoint": "https://www.justsecurity.org/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T09:29:55.311Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T23:55:39.351Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T09:29:55.311Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T04:05:33.139Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "evening-shire", + "provider": "Evening Shire", + "endpoint": "https://eveningshire.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T07:21:41.099Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-25T07:21:41.099Z", + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastCheckedAt": "2026-04-23T20:18:46.625Z" + }, + { + "id": "quadrant2design-exhibiting-guides", + "provider": "Quadrant2. Design Exhibiting Guides", + "endpoint": "https://www.quadrant2design.com/exhibiting-guides/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T07:21:41.099Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-25T07:21:41.099Z", + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastCheckedAt": "2026-04-23T23:57:53.617Z" + }, + { + "id": "semibold", + "provider": "Semibold", + "endpoint": "https://www.semibold.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T07:21:41.099Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-25T07:21:41.099Z", + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "gnet-radicalisation-rss", + "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", + "endpoint": "https://gnet-research.org/tag/radicalisation/feed/", + "kind": "rss", + "lane": "prevention", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T21:08:30.446Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "barking-dagenham-council-news", + "provider": "Barking and Dagenham Council a News", + "endpoint": "https://www.lbbd.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 4, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "hammersmith-fulham-news", + "provider": "Hammersmith and Fulham Council a News", + "endpoint": "https://www.lbhf.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "royal-greenwich-news", + "provider": "Royal Borough of Greenwich a News", + "endpoint": "https://www.royalgreenwich.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 4, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "uk-ncsc-threat-reports", + "provider": "National Cyber Security Centre (UK) a Threat Reports", + "endpoint": "https://www.ncsc.gov.uk/api/1/services/v1/report-rss-feed.xml", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T21:08:30.446Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "uk-parliament-isc", + "provider": "UK Parliament a Intelligence and Security Committee (Reports & News)", + "endpoint": "https://isc.independent.gov.uk/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 4, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ecfr-feeds-index", + "provider": "ECFR - Feeds", + "endpoint": "https://ecfr.eu/feeds/", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "statewatch-news", + "provider": "Statewatch - News", + "endpoint": "https://www.statewatch.org/news/", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "clingendael-publications", + "provider": "Clingendael Institute a Publications", + "endpoint": "https://www.clingendael.org/publications", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ecfr-publications", + "provider": "European Council on Foreign Relations (ECFR) a Publications", + "endpoint": "https://ecfr.eu/publications/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "financial-times-world", + "provider": "Financial Times a World", + "endpoint": "https://www.ft.com/world", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "politico-europe", + "provider": "Politico Europe", + "endpoint": "https://www.politico.eu/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "acled-updates", + "provider": "ACLED a Updates and Analysis", + "endpoint": "https://acleddata.com/", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "resolve-network-research", + "provider": "RESOLVE Network a Research", + "endpoint": "https://www.resolvenet.org/news", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 17 after repeated failures", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 503", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "reuters-uk", + "provider": "Reuters a UK News", + "endpoint": "https://www.reuters.com/world/uk/", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "soufan-center-intelbrief", + "provider": "The Soufan Center a Intel. Brief", + "endpoint": "https://thesoufancenter.org/category/intelbrief/", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "tony-blair-institute-news", + "provider": "Tony Blair Institute for Global Change a Publications", + "endpoint": "https://institute.global/insights", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "chatham-house-home", + "provider": "Chatham House", + "endpoint": "https://www.chathamhouse.org/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "chatham-house-security-defence", + "provider": "Chatham House - Security and Defence", + "endpoint": "https://www.chathamhouse.org/topics/security-and-defence", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "institute-global-home", + "provider": "Institute for Global Change", + "endpoint": "https://www.institute.global/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "wiltshire-999s", + "provider": "Wiltshire 999s", + "endpoint": "https://www.wiltshire999s.co.uk/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "icsr-kcl", + "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", + "endpoint": "https://icsr.info/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "rand-terrorism-topic", + "provider": "RAND - Terrorism Topic Updates", + "endpoint": "https://www.rand.org/topics/terrorism.html", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "start-baad-database", + "provider": "National Consortium for the Study of Terrorism (START) - Big Allied and Dangerous (BAAD) Database", + "endpoint": "https://www.start.umd.edu/baad/database/", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "start-center-publications", + "provider": "START Center (UMD) - News & Publications", + "endpoint": "https://www.start.umd.edu/news", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "bdk-rss", + "provider": "Bund Deutscher Kriminalbeamter - RSS", + "endpoint": "https://www.bdk.de/rss/alle-nachrichten/RSS", + "kind": "rss", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "euractiv-security-rss", + "provider": "BBC News - Europe", + "endpoint": "https://feeds.bbci.co.uk/news/world/europe/rss.xml", + "kind": "rss", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "isd-global-publications", + "provider": "ISD - Publications", + "endpoint": "https://www.isdglobal.org/publications/", + "kind": "html", + "lane": "prevention", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "dw-europe-rss", + "provider": "Deutsche Welle a Europe (RSS)", + "endpoint": "https://rss.dw.com/rdf/rss-en-eu", + "kind": "rss", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "ap-top-news", + "provider": "BBC News - Top Stories", + "endpoint": "https://feeds.bbci.co.uk/news/rss.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "crisis-group", + "provider": "International Crisis Group a Research & Analysis", + "endpoint": "https://www.crisisgroup.org/rss.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "crisis-group-europe", + "provider": "International Crisis Group a Europe (RSS)", + "endpoint": "https://www.crisisgroup.org/rss/56", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "lawfare-blog", + "provider": "Just Security - National Security Analysis", + "endpoint": "https://www.justsecurity.org/", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "henry-jackson-society-news", + "provider": "RUSI - Terrorism and Conflict", + "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=henry-jackson-society-news", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "the-sun-all", + "provider": "The Sun", + "endpoint": "https://www.thesun.co.uk/feeds/all/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "the-sun-all-english", + "provider": "The Sun", + "endpoint": "https://www.thesun.co.uk/feeds/news-app-english-001-all/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "the-sun-homepage", + "provider": "The Sun", + "endpoint": "https://www.thesun.co.uk/feeds/favourite-homepage/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "the-sun-news-english", + "provider": "The Sun", + "endpoint": "https://www.thesun.co.uk/feeds/news-app-english-007-news/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "metro", + "provider": "BBC News - UK", + "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml?source=metro", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "pinknews", + "provider": "Pink. News", + "endpoint": "https://www.pinknews.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T13:19:06.686Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T13:19:06.686Z", + "lastFailureAt": "2026-04-19T13:19:06.686Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "the-daily-mash", + "provider": "The Daily Mash", + "endpoint": "https://www.thedailymash.co.uk/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T13:19:06.686Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T13:19:06.686Z", + "lastFailureAt": "2026-04-19T13:19:06.686Z", + "lastCheckedAt": "2026-04-23T22:53:56.180Z" + }, + { + "id": "the-scottish-sun", + "provider": "The Scottish Sun", + "endpoint": "https://www.thescottishsun.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "the-sun", + "provider": "The Sun", + "endpoint": "https://www.thesun.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "elluminet-press", + "provider": "9to5. Mac", + "endpoint": "https://9to5mac.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 20 after repeated failures", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "faded-spring", + "provider": "Emily Underworld", + "endpoint": "https://emilyunderworld.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "ian-neate-blog", + "provider": "9to5. Mac", + "endpoint": "https://9to5mac.com/feed/?source=ian-neate-blog", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "sks-business-services", + "provider": "SKS Business Services", + "endpoint": "https://www.sksbusinessservices.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "streetspace", + "provider": "Streetspace", + "endpoint": "https://streetspacegroup.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "police-scotland-news", + "provider": "Police Scotland news", + "endpoint": "https://www.scotland.police.uk/what-s-happening/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 23 after repeated failures", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T19:32:35.264Z", + "lastFailureAt": "2026-04-19T19:32:35.264Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "frontex-news-releases", + "provider": "Frontex a News Releases", + "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/", + "kind": "html", + "lane": "border", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "enisa-news", + "provider": "ENISA (EU Cybersecurity Agency) a News", + "endpoint": "https://www.enisa.europa.eu/news", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "enisa-rss-transition-page", + "provider": "ENISA - RSS Feeds Transition Notice", + "endpoint": "https://www.enisa.europa.eu/rss-feeds-discontinued-new-subscription-mechanism-coming-soon", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "eurojust-press-news-html", + "provider": "Eurojust - Press Releases and News", + "endpoint": "https://www.eurojust.europa.eu/media-and-events/press-releases-and-news", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "europol-media-press", + "provider": "Europol a Media and Press", + "endpoint": "https://www.europol.europa.eu/media-press", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "europol-newsroom-html", + "provider": "Europol - Newsroom", + "endpoint": "https://www.europol.europa.eu/media-press/newsroom", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "finland-supo-news", + "provider": "Finnish Security Intelligence Service - News", + "endpoint": "https://supo.fi/en/current-issues", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "german-interior-ministry-press", + "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", + "endpoint": "https://www.bmz.de/en/feed.rss", + "kind": "rss", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 20 after repeated failures", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 400", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "paris-prefecture-police-rss-page", + "provider": "Paris Prefecture of Police - RSS", + "endpoint": "https://www.prefecturedepolice.interieur.gouv.fr/presentation/les-directions-et-services/le-cabinet-du-prefet-de-police/service-de-la-communication/abonnez-vous-aux-flux-rss", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "spain-interior-ministry-news", + "provider": "Spanish Ministry of the Interior - Press", + "endpoint": "https://www.interior.gob.es/opencms/en/prensa/", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "ertzaintza-news", + "provider": "Ertzaintza - News", + "endpoint": "https://www.ertzaintza.euskadi.eus/lfr/eu/webertzaintza/noticias", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "finland-police-news", + "provider": "Finnish Police - News", + "endpoint": "https://poliisi.fi/en/news", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "paris-prefecture-police-press-releases", + "provider": "Paris Prefecture of Police - Press Releases", + "endpoint": "https://www.prefecturedepolice.interieur.gouv.fr/actualites-et-presse/communiques-de-presse/communiques-de-presse", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "romanian-police-news", + "provider": "Romanian Police - News", + "endpoint": "https://www.politiaromana.ro/en/news", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "eu-commission-presscorner-home", + "provider": "Council of the EU - Press Releases (RSS)", + "endpoint": "https://www.consilium.europa.eu/en/rss/pressreleases.ashx?source=eu-commission-presscorner-home", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "eu-council-fight-against-terrorism", + "provider": "Council of the EU - Fight Against Terrorism", + "endpoint": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "eu-council-rss-index", + "provider": "Council of the EU - RSS Index", + "endpoint": "https://www.consilium.europa.eu/en/about-site/rss/", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "eu-ct-coordinator", + "provider": "EU Counter-Terrorism Coordinator a Council of the EU", + "endpoint": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/eu-counter-terrorism-coordinator/", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "eu-fra-rss", + "provider": "EU Agency for Fundamental Rights (FRA) a RSS", + "endpoint": "https://fra.europa.eu/en/content/rss", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "eurojust-rss-feeds-page", + "provider": "Eurojust - RSS Feeds", + "endpoint": "https://www.eurojust.europa.eu/rss-feeds", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "europol-tesat-report", + "provider": "Europol - TESAT Report", + "endpoint": "https://www.europol.europa.eu/publications-events/main-reports/tesat-report", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "fra-rss", + "provider": "Human Rights Watch - News RSS", + "endpoint": "https://www.hrw.org/rss/news", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "europol-eu-iru", + "provider": "Europol a EU Internet Referral Unit (EU IRU)", + "endpoint": "https://www.europol.europa.eu/about-europol/european-counter-terrorism-centre-ectc/eu-internet-referal-unit-eu-iru", + "kind": "html", + "lane": "prevention", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ncsc-nl-rss", + "provider": "NCSC Netherlands - RSS", + "endpoint": "https://feeds.ncsc.nl/nieuws.rss", + "kind": "rss", + "lane": "prevention", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "eu-council-terrorism-sanctions", + "provider": "Council of the EU - Sanctions Against Terrorism", + "endpoint": "https://www.consilium.europa.eu/en/policies/sanctions-against-terrorism/", + "kind": "html", + "lane": "sanctions", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "unhcr-europe-news", + "provider": "UNHCR Europe a News", + "endpoint": "https://www.unhcr.org/europe/news", + "kind": "html", + "lane": "border", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "french-interior-ministry-news", + "provider": "French Ministry of the Interior - News", + "endpoint": "https://www.interieur.gouv.fr/actualites", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "netherlands-nctv-news", + "provider": "Dutch NCTV - News", + "endpoint": "https://www.nctv.nl/actueel", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "french-gendarmerie-news", + "provider": "Gendarmerie Nationale - News", + "endpoint": "https://www.gendarmerie.interieur.gouv.fr/gendarmerie/actualites", + "kind": "html", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "french-police-nationale-news", + "provider": "Police Nationale - News", + "endpoint": "https://www.police-nationale.interieur.gouv.fr/actualites", + "kind": "html", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ireland-gardai-press", + "provider": "An Garda Siochana - Press Releases", + "endpoint": "https://www.garda.ie/en/about-us/our-departments/office-of-corporate-communications/press-releases/", + "kind": "html", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "paris-police-prefecture-news", + "provider": "France24 - France (RSS)", + "endpoint": "https://www.france24.com/en/france/rss", + "kind": "rss", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "portugal-psp-news", + "provider": "The Portugal News - Crime", + "endpoint": "https://www.theportugalnews.com/news/crime", + "kind": "html", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "coe-counter-terrorism", + "provider": "Council of Europe a Counter-Terrorism", + "endpoint": "https://www.coe.int/en/web/counter-terrorism/news-updates", + "kind": "html", + "lane": "oversight", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "netherlands-prosecution-news", + "provider": "Dutch Public Prosecution Service - News", + "endpoint": "https://www.om.nl/actueel/nieuws", + "kind": "html", + "lane": "oversight", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "pst-no-english", + "provider": "PST (Norway) English reporting page", + "endpoint": "https://www.pst.no/en/report/", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ran-network", + "provider": "RUSI - Terrorism and Conflict", + "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=ran-network", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "supo-fi-english", + "provider": "SUPO Finland news and press releases", + "endpoint": "https://supo.fi/en/news-and-press-releases", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "iom-news", + "provider": "IOM (International Organization for Migration) a News", + "endpoint": "https://www.iom.int/news", + "kind": "html", + "lane": "border", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "unsc-counter-terrorism-committee", + "provider": "UN Security Council - Counter-Terrorism Committee (CTC) Updates", + "endpoint": "https://www.un.org/securitycouncil/ctc/news", + "kind": "html", + "lane": "oversight", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "fatf-news", + "provider": "Financial Action Task Force (FATF) a News", + "endpoint": "https://www.fatf-gafi.org/en/publications.html", + "kind": "html", + "lane": "sanctions", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "interpol-notices", + "provider": "INTERPOL a Notices", + "endpoint": "https://www.interpol.int/How-we-work/Notices", + "kind": "html", + "lane": "sanctions", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "unsc-1267-press-releases", + "provider": "UN Security Council - ISIL/Da'esh & Al-Qaeda Sanctions Committee Press Releases", + "endpoint": "https://main.un.org/securitycouncil/en/sanctions/1267/press-releases", + "kind": "html", + "lane": "sanctions", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "unsc-consolidated-list", + "provider": "UN Security Council - Consolidated Sanctions List Updates (RSS)", + "endpoint": "https://main.un.org/securitycouncil/en/rss-updates-unsc-consolidated-list", + "kind": "rss", + "lane": "sanctions", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "barnet-council-news", + "provider": "Barnet Post", + "endpoint": "https://barnetpost.co.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "city-of-london-police-fraud-reporting", + "provider": "City of London Police - Fraud Reporting", + "endpoint": "https://www.cityoflondon.police.uk/ro/report/fo/v1/fraud/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cnwl-news", + "provider": "Central and North West London NHS Foundation Trust a News", + "endpoint": "https://www.cnwl.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "east-london-nhs-news", + "provider": "East London NHS Foundation Trust a News", + "endpoint": "https://www.elft.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "enfield-council-news", + "provider": "Enfield Council a News and Events", + "endpoint": "https://www.enfield.gov.uk/news-and-events", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "haringey-council-news", + "provider": "Haringey Community Press", + "endpoint": "https://haringeycommunitypress.co.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "harrow-council-news", + "provider": "Harrow Council a News", + "endpoint": "https://www.harrow.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "heathrow-media-centre", + "provider": "Heathrow a Media Centre", + "endpoint": "https://mediacentre.heathrow.com/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "imperial-healthcare-news", + "provider": "Imperial College Healthcare NHS Trust a News", + "endpoint": "https://www.imperial.nhs.uk/about-us/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "kensington-chelsea-newsroom", + "provider": "Royal Borough of Kensington and Chelsea a Newsroom", + "endpoint": "https://www.rbkc.gov.uk/newsroom", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "lewisham-council-news", + "provider": "Salamander News", + "endpoint": "https://salamandernews.org/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "london-ambulance-news", + "provider": "London Ambulance Service a News", + "endpoint": "https://www.londonambulance.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "london-city-airport-media-centre", + "provider": "London City Airport a Media Centre", + "endpoint": "https://www.londoncityairport.com/corporate/media-centre", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "london-councils-news", + "provider": "London Councils a News", + "endpoint": "https://www.londoncouncils.gov.uk/news-and-press-releases", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "london-fire-brigade-news", + "provider": "London Fire Brigade a News", + "endpoint": "https://www.london-fire.gov.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "london-gov-home", + "provider": "London.gov.uk", + "endpoint": "https://www.london.gov.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "london-gov-press-releases-html", + "provider": "London.gov.uk - Press Releases", + "endpoint": "https://www.london.gov.uk/press-releases", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nhs-london-ncl-news", + "provider": "NHS North Central London a News", + "endpoint": "https://nclhealthandcare.org.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nhs-london-swl-news", + "provider": "NHS South West London a News", + "endpoint": "https://www.southwestlondon.icb.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "north-middlesex-news", + "provider": "North Middlesex University Hospital a News", + "endpoint": "https://www.northmid.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "port-of-london-authority-news", + "provider": "Port of London Authority a News", + "endpoint": "https://pla.co.uk/News", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "royal-free-london-news", + "provider": "Royal Free London NHS Foundation Trust a News", + "endpoint": "https://www.royalfree.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "southwark-newsroom", + "provider": "Southwark Council a Newsroom", + "endpoint": "https://news.southwark.gov.uk/newsroom/news/rss", + "kind": "rss", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "tavistock-portman-news", + "provider": "Tavistock and Portman NHS Foundation Trust a News", + "endpoint": "https://tavistockandportman.nhs.uk/about-us/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "tfl-press-releases", + "provider": "Transport for London - Press Releases", + "endpoint": "https://tfl.gov.uk/info-for/media/press-releases?source=tfl-press-releases", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "tfl-press-releases-html", + "provider": "Transport for London - Press Releases", + "endpoint": "https://tfl.gov.uk/info-for/media/press-releases", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "city-of-london-police-news", + "provider": "National Crime Agency - News", + "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=city-of-london-police-news", + "kind": "html", + "lane": "incidents", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "city-of-london-police-news-html", + "provider": "City of London Police - News", + "endpoint": "https://www.cityoflondon.police.uk/news/city-of-london-police/news/", + "kind": "html", + "lane": "incidents", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "city-of-london-police-newsroom", + "provider": "Metropolitan Police Service - News", + "endpoint": "https://news.met.police.uk/", + "kind": "html", + "lane": "incidents", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "ct-policing-london", + "provider": "Counter Terrorism Policing London", + "endpoint": "https://www.counterterrorism.police.uk/counter-terrorism-policing-london/", + "kind": "html", + "lane": "incidents", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "mopac-html", + "provider": "Mayor's Office for Policing and Crime", + "endpoint": "https://www.london.gov.uk/programmes-strategies/mayors-office-policing-and-crime-mopac", + "kind": "html", + "lane": "oversight", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "bbc-news-front-page-legacy", + "provider": "BBC News a Front Page (Legacy RSS)", + "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/front_page/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-24T22:12:37.099Z", + "lastFailureAt": "2026-04-17T22:12:37.099Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "bbc-news-uk", + "provider": "BBC News a UK", + "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-24T22:12:37.099Z", + "lastFailureAt": "2026-04-17T22:12:37.099Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "essex-police-news", + "provider": "Essex Police a News", + "endpoint": "https://www.essex.police.uk/news/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "kent-police-news", + "provider": "Kent Police a News", + "endpoint": "https://www.kent.police.uk/news/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "mi5-news", + "provider": "National Crime Agency - News", + "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=mi5-news", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "national-crime-agency-news", + "provider": "National Crime Agency a News", + "endpoint": "https://www.nationalcrimeagency.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "report-fraud-home", + "provider": "Report Fraud", + "endpoint": "https://www.reportfraud.police.uk/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "report-fraud-newsroom", + "provider": "Report Fraud - Newsroom", + "endpoint": "https://www.reportfraud.police.uk/collection/newsroom/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "church-of-england-newspaper", + "provider": "Church of England Newspaper", + "endpoint": "https://www.churchnewspaper.com/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-24T22:12:37.099Z", + "lastFailureAt": "2026-04-17T22:12:37.099Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "bedfordshire-police-news", + "provider": "Bedfordshire Police - News", + "endpoint": "https://www.beds.police.uk/news/bedfordshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "bedfordshire-police-news-search", + "provider": "Bedfordshire Police - News Search", + "endpoint": "https://www.beds.police.uk/news/news-search/?ct=News", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "british-transport-police-news", + "provider": "British Transport Police Authority - News Feed", + "endpoint": "https://btpa.police.uk/feed/", + "kind": "rss", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "btp-british-transport-police-news-html", + "provider": "British Transport Police - News", + "endpoint": "https://www.btp.police.uk/news/british-transport-police/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cambridgeshire-police-news-search", + "provider": "Cambridgeshire Police - News Search", + "endpoint": "https://www.cambs.police.uk/news/news-search/?ct=News", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cheshire-police-news", + "provider": "Cheshire Constabulary - News", + "endpoint": "https://www.cheshire.police.uk/news/cheshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cleveland-police-news", + "provider": "Cleveland Police - News", + "endpoint": "https://www.cleveland.police.uk/news/cleveland/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cps-news-centre", + "provider": "Crown Prosecution Service a News Centre", + "endpoint": "https://www.cps.gov.uk/news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ct-policing-north-west", + "provider": "Counter Terrorism Policing North West", + "endpoint": "https://www.counterterrorism.police.uk/north-west/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ct-policing-uk-latest-news", + "provider": "Counter Terrorism Policing UK a Latest News", + "endpoint": "https://www.counterterrorism.police.uk/latest-news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ct-policing-uk-rss-feed", + "provider": "Counter Terrorism Policing UK - Latest News", + "endpoint": "https://www.counterterrorism.police.uk/latest-news/?source=ct-policing-uk-rss-feed", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "cumbria-police-news", + "provider": "Cumbria Police - News", + "endpoint": "https://www.cumbria.police.uk/news/cumbria/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cumbria-police-newsroom", + "provider": "Cumbria Police - Newsroom", + "endpoint": "https://www.news.cumbria.police.uk/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "derbyshire-police-news", + "provider": "Derbyshire Police - News", + "endpoint": "https://www.derbyshire.police.uk/news/derbyshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "devon-and-cornwall-police-newsroom", + "provider": "Devon and Cornwall Police - Newsroom", + "endpoint": "https://news.devon-cornwall.police.uk/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "devon-cornwall-police-news", + "provider": "Devon and Cornwall Police - News", + "endpoint": "https://www.devon-cornwall.police.uk/news/devon-cornwall/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "dorset-police-news", + "provider": "Dorset Police - News", + "endpoint": "https://www.dorset.police.uk/news/dorset/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "dorset-police-newsroom", + "provider": "Dorset Police - Newsroom", + "endpoint": "https://news.dorset.police.uk/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "durham-constabulary-news", + "provider": "Durham Constabulary a News", + "endpoint": "https://www.durham.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "durham-police-durham-news", + "provider": "Durham Police - Durham News", + "endpoint": "https://www.durham.police.uk/news/durham/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "dyfed-powys-police-news", + "provider": "Dyfed-Powys Police - News", + "endpoint": "https://www.dyfed-powys.police.uk/news/dyfed-powys/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "essex-police-news-html", + "provider": "Essex Police - News", + "endpoint": "https://www.essex.police.uk/news/essex/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gloucestershire-police-news", + "provider": "Gloucestershire Police - News", + "endpoint": "https://www.gloucestershire.police.uk/news/gloucestershire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gmp-news", + "provider": "Greater Manchester Police a News", + "endpoint": "https://www.gmp.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "greater-manchester-police-news", + "provider": "Greater Manchester Police - News", + "endpoint": "https://www.gmp.police.uk/news/greater-manchester/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gwent-police-news", + "provider": "Gwent Police - News", + "endpoint": "https://www.gwent.police.uk/news/gwent/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "hampshire-police-news", + "provider": "Hampshire & Isle of Wight Constabulary a News", + "endpoint": "https://www.hampshire.police.uk/news/hampshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "hertfordshire-police-news", + "provider": "Hertfordshire Constabulary a News", + "endpoint": "https://www.herts.police.uk/news/hertfordshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "humberside-police-news-search", + "provider": "Humberside Police - News Search", + "endpoint": "https://www.humberside.police.uk/news/news-search/?ct=News", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "kent-police-news-html", + "provider": "Kent Police - News", + "endpoint": "https://www.kent.police.uk/news/kent/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "lancashire-constabulary-news", + "provider": "Lancashire Constabulary a News", + "endpoint": "https://www.lancashire.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "leicestershire-police-news", + "provider": "National Crime Agency - News", + "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=leicestershire-police-news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "lincolnshire-police-news", + "provider": "Lincolnshire Police - News", + "endpoint": "https://www.lincs.police.uk/news/lincolnshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "merseyside-police-news", + "provider": "Merseyside Police a News", + "endpoint": "https://www.merseyside.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "merseyside-police-news-html", + "provider": "Merseyside Police - News", + "endpoint": "https://www.merseyside.police.uk/news/merseyside-police/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "norfolk-constabulary-news", + "provider": "Norfolk Constabulary - News", + "endpoint": "https://www.norfolk.police.uk/news/norfolk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "north-wales-police-news", + "provider": "North Wales Police - News", + "endpoint": "https://www.northwales.police.uk/news/north-wales/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "north-yorkshire-police-news-html", + "provider": "North Yorkshire Police - News", + "endpoint": "https://www.northyorkshire.police.uk/news/north-yorkshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "northamptonshire-police-news-html", + "provider": "Northamptonshire Police - News", + "endpoint": "https://www.northants.police.uk/news/northants/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "northumbria-police-news", + "provider": "North East Bylines", + "endpoint": "https://northeastbylines.co.uk/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "northumbria-police-northumbria-news", + "provider": "Northumbria Police - Northumbria News", + "endpoint": "https://www.northumbria.police.uk/news/northumbria/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nottinghamshire-police-news", + "provider": "Nottinghamshire Police a News", + "endpoint": "https://www.nottinghamshire.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nottinghamshire-police-nottinghamshire-news", + "provider": "Nottinghamshire Police - Nottinghamshire News", + "endpoint": "https://www.nottinghamshire.police.uk/news/nottinghamshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "psni-news", + "provider": "Police Service of Northern Ireland a News", + "endpoint": "https://www.psni.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "south-wales-police-news", + "provider": "South Wales Police - News", + "endpoint": "https://www.south-wales.police.uk/news/south-wales/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "south-yorkshire-police-news", + "provider": "South Yorkshire Police a News", + "endpoint": "https://www.southyorkshire.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "staffordshire-police-news", + "provider": "Staffordshire Police a News", + "endpoint": "https://www.staffordshire.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "staffordshire-police-staffordshire-news", + "provider": "Staffordshire Police - Staffordshire News", + "endpoint": "https://www.staffordshire.police.uk/news/staffordshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "suffolk-constabulary-news", + "provider": "Suffolk Constabulary - News", + "endpoint": "https://www.suffolk.police.uk/news/suffolk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "surrey-police-news", + "provider": "Surrey Police a News", + "endpoint": "https://www.surrey.police.uk/news/surrey/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "sussex-police-news", + "provider": "Sussex Police a News", + "endpoint": "https://www.sussex.police.uk/news/sussex/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "thames-valley-police-news", + "provider": "Thames Valley Police a News", + "endpoint": "https://www.thamesvalley.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "thames-valley-police-news-html", + "provider": "Thames Valley Police - Thames Valley News", + "endpoint": "https://www.thamesvalley.police.uk/news/thames-valley/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "warwickshire-police-news", + "provider": "Warwickshire Connected - Latest Alerts", + "endpoint": "https://www.warwickshireconnected.com/Content/Pages/Latest-Alerts", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "west-mercia-police-news-html", + "provider": "West Mercia Police - News", + "endpoint": "https://www.westmercia.police.uk/news/west-mercia/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "west-midlands-police-news", + "provider": "West Midlands Police a News", + "endpoint": "https://www.westmidlands.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "west-yorkshire-police-missing-rss", + "provider": "West Yorkshire Police - Missing Feed", + "endpoint": "https://www.westyorkshire.police.uk/news/missing/feed", + "kind": "rss", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "wiltshire-police-news", + "provider": "Wiltshire Police - News", + "endpoint": "https://www.wiltshire.police.uk/news/wiltshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cps-homepage", + "provider": "Crown Prosecution Service", + "endpoint": "https://www.cps.gov.uk/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gov-uk-hmic", + "provider": "HM Inspectorate of Constabulary a GOV.UK", + "endpoint": "https://hmicfrs.justiceinspectorates.gov.uk/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gov-uk-parliament-jcnss", + "provider": "UK Parliament a Joint Committee on National Security Strategy", + "endpoint": "https://committees.parliament.uk/committee/54/joint-committee-on-the-national-security-strategy/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "lords-in-focus-rss", + "provider": "Hansard Society - Despatch Box", + "endpoint": "https://www.hansardsociety.org.uk/blog", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "lords-library-notes-rss", + "provider": "Hansard Society - Despatch Box", + "endpoint": "https://www.hansardsociety.org.uk/blog?source=lords-library-notes-rss", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "police-ombudsman-current-investigations", + "provider": "Police Ombudsman - Current Investigations", + "endpoint": "https://www.policeombudsman.org/investigation-reports/current-investigations", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "police-uk-outcomes-at-location-1609590", + "provider": "Police Data UK - Outcomes At Location API Docs", + "endpoint": "https://data.police.uk/docs/method/outcomes-at-location/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "uk-parliament-business-news", + "provider": "UK Parliament - Business News", + "endpoint": "https://www.parliament.uk/business/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "uk-parliament-foreign-affairs-committee", + "provider": "UK Parliament a Foreign Affairs Select Committee", + "endpoint": "https://committees.parliament.uk/committee/78/foreign-affairs-committee/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "uk-parliament-justice-committee", + "provider": "UK Parliament a Justice Select Committee", + "endpoint": "https://committees.parliament.uk/committee/102/justice-committee/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ct-policing-prevent-programme", + "provider": "Counter Terrorism Policing - Prevent", + "endpoint": "https://www.counterterrorism.police.uk/what-we-do/counter-terrorism/prevent/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ct-policing-what-you-can-do", + "provider": "Counter Terrorism Policing - What You Can Do", + "endpoint": "https://www.counterterrorism.police.uk/what-you-can-do/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gov-uk-report-terrorism", + "provider": "GOV.UK - Report Terrorism", + "endpoint": "https://www.gov.uk/report-terrorism", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gov-uk-terrorism-national-emergency", + "provider": "GOV.UK - Terrorism National Emergency", + "endpoint": "https://www.gov.uk/terrorism-national-emergency", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "mi5-terrorism-threat-levels", + "provider": "MI5 - Terrorism Threat Levels", + "endpoint": "https://www.mi5.gov.uk/threats-and-advice/terrorism-threat-levels", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "northamptonshire-talking", + "provider": "Northamptonshire Talking", + "endpoint": "https://www.northamptonshiretalking.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "npsa-blog", + "provider": "NPSA - Blog", + "endpoint": "https://www.npsa.gov.uk/blog", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "npsa-blog-news", + "provider": "NPSA - Blog News", + "endpoint": "https://www.npsa.gov.uk/blog/news", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "protectuk", + "provider": "ProtectUK (NPSA) a Protective Security Guidance", + "endpoint": "https://www.protectuk.police.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "uk-ncsc-homepage", + "provider": "UK NCSC - Homepage", + "endpoint": "https://www.ncsc.gov.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "uk-sanctions-list", + "provider": "UK Sanctions List (FCDO) a Consolidated List (XML Service)", + "endpoint": "https://sanctionslist.fcdo.gov.uk/docs/UK-Sanctions-List.xml", + "kind": "html", + "lane": "sanctions", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "fbi-national-press-releases", + "provider": "FBI - National Press Releases (RSS)", + "endpoint": "https://www.fbi.gov/feeds/national-press-releases/RSS", + "kind": "rss", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "fbi-stories", + "provider": "FBI - Top Stories (RSS)", + "endpoint": "https://www.fbi.gov/feeds/fbi-top-stories/rss.xml", + "kind": "rss", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "fbi-top-stories", + "provider": "FBI - Top Stories (RSS)", + "endpoint": "https://www.fbi.gov/feeds/fbi-top-stories/rss.xml?source=fbi-top-stories", + "kind": "rss", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "us-house-homeland-security", + "provider": "US House Committee on Homeland Security - News", + "endpoint": "https://homeland.house.gov/news/", + "kind": "html", + "lane": "oversight", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "belgium-crisis-centre-news", + "provider": "Belgian National Crisis Centre - Newsroom", + "endpoint": "https://crisiscenter.be/en/newsroom", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 5 after repeated failures", + "quarantinedAt": "2026-04-17T20:09:53.653Z", + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-17T20:09:53.653Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "german-bka-press", + "provider": "German BKA - Press Releases (2026 archive)", + "endpoint": "https://www.bka.de/DE/Presse/Listenseite_Pressemitteilungen/2026/2026_node.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 5 after repeated failures", + "quarantinedAt": "2026-04-17T20:09:53.653Z", + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-17T20:09:53.653Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "policia-nacional-news", + "provider": "Policia Nacional - Press", + "endpoint": "https://www.policia.es/_es/comunicacion_salaprensa.php", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 5 after repeated failures", + "quarantinedAt": "2026-04-17T20:09:53.653Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-17T20:09:53.653Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-19T18:05:04.781Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T18:05:04.781Z", + "lastFailureAt": "2026-04-19T18:05:04.781Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "bfv-de-english", + "provider": "BfV service page (Federal Office for the Protection of the Constitution)", + "endpoint": "https://www.verfassungsschutz.de/EN/service/service_node.html", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-17T11:07:28.674Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-24T11:07:28.674Z", + "lastFailureAt": "2026-04-17T11:07:28.674Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "german-bka-press-releases-de", + "provider": "BKA Germany - Press Releases", + "endpoint": "https://www.bka.de/DE/Aktuelle. Informationen/Aktuelle. Meldungen/Pressemeldungen/pressemitteilungen_node.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Infrastructure instability — mixed timeout and network errors; auto-retry likely to recover", + "quarantinedAt": "2026-04-17T08:04:04.612Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T07:32:24.475Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T17:39:27.641Z", + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastCheckedAt": "2026-04-22T17:39:27.641Z" + }, + { + "id": "surgezirc-uk", + "provider": "Surge. Zirc UK", + "endpoint": "https://surgezirc.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T08:04:04.612Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T14:11:10.963Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T11:47:27.254Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T11:47:27.254Z", + "lastFailureAt": "2026-04-23T11:47:27.254Z", + "lastCheckedAt": "2026-04-23T11:47:27.254Z" + }, + { + "id": "arcticdry", + "provider": "Arctic. Dry", + "endpoint": "https://www.arcticdry.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T08:04:04.612Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-24T08:04:04.612Z", + "lastFailureAt": "2026-04-17T08:04:04.612Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "police-uk-all-crime-leicester", + "provider": "Police.uk - Street Crime Around Leicester", + "endpoint": "https://data.police.uk/api/crimes-street/all-crime?lat=52.629729&lng=-1.131592", + "kind": "json", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T23:55:39.351Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-23T23:55:39.351Z", + "lastFailureAt": "2026-04-16T23:55:39.351Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "daily-mail-online", + "provider": "Daily Mail Online - Popular Stories", + "endpoint": "https://www.dailymail.co.uk/home/index.rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T23:55:39.351Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-23T23:55:39.351Z", + "lastFailureAt": "2026-04-16T23:55:39.351Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "counter-extremism-project-news", + "provider": "Counter Extremism Project a News", + "endpoint": "https://www.counterextremism.com/news-and-media", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T11:15:29.208Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T12:14:24.733Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "rusi-terrorism-conflict", + "provider": "RUSI - Terrorism and Conflict", + "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T11:15:29.208Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T12:14:24.733Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T12:14:24.733Z", + "lastFailureAt": "2026-04-20T12:14:24.733Z", + "lastCheckedAt": "2026-04-24T03:29:13.488Z" + }, + { + "id": "gov-uk-counter-extremism-commissioner", + "provider": "Counter Extremism Commissioner a GOV.UK", + "endpoint": "https://www.govwire.co.uk/rss/commission-for-countering-extremism", + "kind": "rss", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T19:01:30.233Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-23T19:01:30.233Z", + "lastFailureAt": "2026-04-16T19:01:30.233Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "denmark-pet-news", + "provider": "Danish Security and Intelligence Service - News", + "endpoint": "https://pet.dk/aktuelt/nyhedsliste", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "german-bfv-news", + "provider": "German BfV - Press", + "endpoint": "https://www.verfassungsschutz.de/EN/service/press/press_node.html", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nctv-english-rss", + "provider": "NCTV Netherlands - English RSS", + "endpoint": "https://english.nctv.nl/latest/news", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "belgian-federal-police-news", + "provider": "Belgian Federal Police - News", + "endpoint": "https://www.police.be/5998/en/node/10868", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T11:47:27.254Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T11:47:27.254Z", + "lastFailureAt": "2026-04-23T11:47:27.254Z", + "lastCheckedAt": "2026-04-23T11:47:27.254Z" + }, + { + "id": "czech-police-news", + "provider": "Police of the Czech Republic - News", + "endpoint": "https://policie.gov.cz/clanek/Police-of-the-Czech-Republic.aspx", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "guardia-civil-news", + "provider": "El Pais English - Guardia Civil", + "endpoint": "https://english.elpais.com/news/guardia-civil/", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "switzerland-fedpol-news", + "provider": "Swiss fedpol - News", + "endpoint": "https://www.fedpol.admin.ch/en/newnsb", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-22T21:59:30.032Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T21:59:30.032Z", + "lastFailureAt": "2026-04-22T21:59:30.032Z", + "lastCheckedAt": "2026-04-22T21:59:30.032Z" + }, + { + "id": "pet-dk-english", + "provider": "PET (Denmark) a English News", + "endpoint": "https://pet.dk/en/news-and-publications/news-list", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nato-news-rss", + "provider": "NATO a News (RSS)", + "endpoint": "https://www.nato.int/en/news-and-events/articles/news", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "occrp-news", + "provider": "OCCRP a Organized Crime and Corruption Reporting Project", + "endpoint": "https://www.occrp.org/en/announcements", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T07:21:41.099Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T08:39:19.161Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "rferl-security-news-rss", + "provider": "Radio Free Europe/Radio Liberty a Security (RSS)", + "endpoint": "https://www.rferl.org/latest-news", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T07:21:41.099Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T08:39:19.161Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T08:39:19.161Z", + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastCheckedAt": "2026-04-23T22:53:56.180Z" + }, + { + "id": "unodc-news", + "provider": "UNODC (UN Office on Drugs and Crime) a Press Releases", + "endpoint": "https://www.unodc.org/unodc/en/news/news.html", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gctf-news", + "provider": "Global Counterterrorism Forum (GCTF) a News", + "endpoint": "https://www.thegctf.org/News-Stories/PgrID/918/PageID/3", + "kind": "html", + "lane": "oversight", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T04:05:33.139Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "barts-health-news", + "provider": "Barts Health NHS Trust a News", + "endpoint": "https://www.bartshealth.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T08:09:12.931Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T08:09:12.931Z", + "lastFailureAt": "2026-04-23T08:09:12.931Z", + "lastCheckedAt": "2026-04-23T08:09:12.931Z" + }, + { + "id": "bromley-council-news", + "provider": "Bromley Council a Newsroom", + "endpoint": "https://www.bromley.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "homerton-healthcare-news", + "provider": "Homerton Healthcare NHS Foundation Trust a News", + "endpoint": "https://www.homerton.nhs.uk/trust-news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "mayor-of-london-press-releases", + "provider": "Mayor of London a Press Releases", + "endpoint": "https://www.london.gov.uk/rss-feeds/80610", + "kind": "rss", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "nhs-london-sel-news", + "provider": "NHS South East London a News", + "endpoint": "https://www.selondonics.org/icb/about-us/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "slam-news", + "provider": "South London and Maudsley NHS Foundation Trust a News", + "endpoint": "https://slam.nhs.uk/pressreleases", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "tower-hamlets-council-news", + "provider": "Tower Hamlets Council a News", + "endpoint": "https://www.towerhamlets.gov.uk/News_events/News.aspx", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "westminster-city-council-news", + "provider": "Westminster City Council a News", + "endpoint": "https://www.westminster.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "whittington-health-news", + "provider": "Whittington Health a News", + "endpoint": "https://www.whittington.nhs.uk/mini-apps/news/news. Items.asp", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "london-assembly-press-releases", + "provider": "London Assembly a Press Releases", + "endpoint": "https://www.london.gov.uk/rss-feeds/80611", + "kind": "rss", + "lane": "oversight", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-defence-intelligence", + "provider": "UK Defence Intelligence a GOV.UK", + "endpoint": "https://www.gov.uk/government/groups/defence-intelligence", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "mi5-news-rss-direct", + "provider": "MI5 - News RSS", + "endpoint": "https://www.mi5.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "daily-politics", + "provider": "Daily Politics", + "endpoint": "https://www.dailypolitics.com/categories/r. RzjN-bU/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T07:21:41.099Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T08:39:19.161Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T08:39:19.161Z", + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastCheckedAt": "2026-04-23T22:53:56.180Z" + }, + { + "id": "joint-committee-human-rights-html", + "provider": "Joint Committee on Human Rights", + "endpoint": "https://committees.parliament.uk/committee/93/human-rights-joint-committee/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T19:31:23.009Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T19:31:23.009Z", + "lastFailureAt": "2026-04-23T19:31:23.009Z", + "lastCheckedAt": "2026-04-23T19:31:23.009Z" + }, + { + "id": "scottish-government-justice-news", + "provider": "Scottish Government - Justice and Safety", + "endpoint": "https://www.gov.scot/policies/community-safety/latest/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "dni-press-releases", + "provider": "Office of the Director of National Intelligence - Press Releases", + "endpoint": "https://www.dni.gov/index.php/who-we-are/348-newsroom/press-releases", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "doj-nsd-press-releases", + "provider": "U.S. Department of Justice - National Security Division Press Releases", + "endpoint": "https://www.justice.gov/nsd/press-room", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "us-treasury-ofac-press-releases", + "provider": "U.S. Treasury (OFAC) - Press Releases", + "endpoint": "https://ofac.treasury.gov/press-releases", + "kind": "html", + "lane": "sanctions", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T15:11:26.228Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-23T15:11:26.228Z", + "lastFailureAt": "2026-04-16T15:11:26.228Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "bbc-news-england-legacy", + "provider": "BBC News a England (Legacy RSS)", + "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/england/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 3, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "aljazeera-news-rss", + "provider": "Al Jazeera English a Top Stories (RSS)", + "endpoint": "https://www.aljazeera.com/xml/rss/all.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 3, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T17:16:47.386Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "rte-ireland-news-rss", + "provider": "RTE News - Ireland (RSS)", + "endpoint": "https://feeds.feedburner.com/ietopstories", + "kind": "rss", + "lane": "context", + "region": "europe", + "healthScore": 5, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T08:39:19.161Z", + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "channel-4-news", + "provider": "Channel 4 News", + "endpoint": "https://www.channel4.com/news/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 10, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T23:15:54.554Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T00:08:15.005Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T03:57:52.244Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "england-naturally", + "provider": "England, Naturally", + "endpoint": "https://englandnaturally.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 11, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-23T03:28:47.210Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + }, + { + "id": "love-my-dress", + "provider": "Love My Dress", + "endpoint": "https://www.lovemydress.net/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 11, + "status": "auto-quarantined", + "reason": "Health score degraded to 14 after repeated failures", + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 520", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "the-week-uk", + "provider": "The Week UK", + "endpoint": "https://www.theweek.co.uk/feeds/all", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 13, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T08:39:19.161Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "euiss-home", + "provider": "EU Institute for Security Studies", + "endpoint": "https://www.iss.europa.eu/", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "icct-home", + "provider": "ICCT - Home", + "endpoint": "https://icct.nl/", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "breakingnews-ie", + "provider": "Breaking. News.ie", + "endpoint": "https://feeds.breakingnews.ie/bntopstories", + "kind": "rss", + "lane": "context", + "region": "eu", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "independent-ie", + "provider": "Independent.ie", + "endpoint": "https://www.independent.ie/rss/", + "kind": "rss", + "lane": "context", + "region": "eu", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "eucrim-counter-terrorism-agenda", + "provider": "eucrim - Commission Counter Terrorism Agenda", + "endpoint": "https://eucrim.eu/news/commission-counter-terrorism-agenda/", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "eucrim-judicial-counter-terrorism-register", + "provider": "eucrim - Judicial Counter Terrorism Register", + "endpoint": "https://eucrim.eu/news/judicial-counter-terrorism-register/", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "icct-perspectives-on-terrorism", + "provider": "Perspectives on Terrorism (ICCT) a Journal", + "endpoint": "https://pt.icct.nl/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "icct-publications", + "provider": "International Centre for Counter-Terrorism (ICCT) - Publications", + "endpoint": "https://icct.nl/publications", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "vox-pol-publications", + "provider": "VOX-Pol Network a Publications", + "endpoint": "https://www.voxpol.eu/publications/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "isd-global", + "provider": "Institute for Strategic Dialogue (ISD) a Articles & Reports", + "endpoint": "https://www.isdglobal.org/", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "bbc-news-world", + "provider": "BBC News a World", + "endpoint": "https://feeds.bbci.co.uk/news/world/rss.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "bbc-news-world-legacy", + "provider": "BBC News a World (Legacy RSS)", + "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/world/rss.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "bellingcat", + "provider": "Bellingcat a Investigations", + "endpoint": "https://www.bellingcat.com/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "chathamhouse-events", + "provider": "Chatham House a Events (RSS)", + "endpoint": "https://www.chathamhouse.org/path/events.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "chathamhouse-news-releases", + "provider": "Chatham House a News Releases (RSS)", + "endpoint": "https://www.chathamhouse.org/path/news-releases.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "global-initiative-news", + "provider": "Global Initiative Against Transnational Organized Crime a News", + "endpoint": "https://globalinitiative.net/news/", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "tech-against-terrorism-podcast", + "provider": "Tech Against Terrorism - Podcast", + "endpoint": "https://podcast.techagainstterrorism.org/", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "war-on-the-rocks", + "provider": "War on the Rocks a National Security & CT Analysis", + "endpoint": "https://warontherocks.com/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "tech-against-terrorism", + "provider": "Tech Against Terrorism a Blog", + "endpoint": "https://techagainstterrorism.org/", + "kind": "html", + "lane": "prevention", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "tech-against-terrorism-home", + "provider": "Tech Against Terrorism - Home", + "endpoint": "https://techagainstterrorism.org/home", + "kind": "html", + "lane": "prevention", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "hope-not-hate-home", + "provider": "Hope not hate podcast", + "endpoint": "https://feeds.buzzsprout.com/170425.rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "rusi-publications", + "provider": "RUSI (Royal United Services Institute) a Publications", + "endpoint": "https://www.rusi.org/publications", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "birmingham-mail", + "provider": "Birmingham Mail", + "endpoint": "https://www.birminghammail.co.uk/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "breaking-news-today", + "provider": "Breaking News Today", + "endpoint": "https://www.breakingnewstoday.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "consett-magazine", + "provider": "Consett Magazine", + "endpoint": "https://consettmagazine.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "daily-echo", + "provider": "Daily Echo", + "endpoint": "https://www.dailyecho.co.uk/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "daily-express", + "provider": "Daily Express", + "endpoint": "https://feeds.feedburner.com/daily-express-news-showbiz", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "daily-mirror", + "provider": "Daily Mirror", + "endpoint": "https://www.mirror.co.uk/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "glasgow-times", + "provider": "Glasgow Times", + "endpoint": "https://www.glasgowtimes.co.uk/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "grimsby-telegraph", + "provider": "Grimsby Telegraph", + "endpoint": "https://www.grimsbytelegraph.co.uk/news/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "herald-scotland-news", + "provider": "Herald Scotland - News", + "endpoint": "https://www.heraldscotland.com/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "huffpost-uk", + "provider": "Huff. Post UK", + "endpoint": "https://www.huffingtonpost.co.uk/feeds/index.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "larne-times", + "provider": "Larne Times", + "endpoint": "https://www.larnetimes.co.uk/news/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "manchester-evening-news", + "provider": "Manchester Evening News", + "endpoint": "https://www.manchestereveningnews.co.uk/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "news-uk", + "provider": "News UK", + "endpoint": "https://www.news.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "politics-co-uk", + "provider": "Politics.co.uk", + "endpoint": "https://www.politics.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "positive-news", + "provider": "Positive News", + "endpoint": "https://www.positive.news/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "scottish-field", + "provider": "Scottish Field", + "endpoint": "https://www.scottishfield.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-argus-news", + "provider": "The Argus", + "endpoint": "https://www.theargus.co.uk/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-bolton-news", + "provider": "The Bolton News - News", + "endpoint": "https://www.theboltonnews.co.uk/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "daily-record", + "provider": "Daily Record", + "endpoint": "https://www.dailyrecord.co.uk/news/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "northern-echo-news", + "provider": "The Northern Echo - News", + "endpoint": "https://www.thenorthernecho.co.uk/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-poke", + "provider": "The Poke", + "endpoint": "https://www.thepoke.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "scarborough-news", + "provider": "The Scarborough News", + "endpoint": "https://www.thescarboroughnews.co.uk/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-scotsman-news", + "provider": "The Scotsman - News", + "endpoint": "https://www.scotsman.com/news/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-york-press-news", + "provider": "The York Press - News", + "endpoint": "https://www.yorkpress.co.uk/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "wales-online", + "provider": "Wales. Online", + "endpoint": "https://www.walesonline.co.uk/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "a-luxury-travel-blog", + "provider": "A Luxury Travel Blog", + "endpoint": "https://www.aluxurytravelblog.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "age-uk-discover", + "provider": "Age UK", + "endpoint": "https://www.ageuk.org.uk/discover/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "alan-malcher", + "provider": "Alan Malcher", + "endpoint": "https://alanmalcher.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "britishbeautyblogger", + "provider": "British Beauty Blogger", + "endpoint": "https://britishbeautyblogger.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "buy-firewood-direct", + "provider": "Buy Firewood Direct", + "endpoint": "https://www.buyfirewooddirect.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "carly-rowena", + "provider": "Carly Rowena", + "endpoint": "https://feeds.feedburner.com/Carly. Rowena. Official", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "cherished-holiday-homes", + "provider": "Cherished Holiday Homes", + "endpoint": "https://cherishedholidayhomes.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "chique-home-living", + "provider": "Chique Home Living", + "endpoint": "https://chiquehomeliving.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "clubwise-blog", + "provider": "Club. Wise Blog", + "endpoint": "https://www.clubwise.com/clubwise-blog/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "disneyrollergirl", + "provider": "Disneyrollergirl", + "endpoint": "https://www.disneyrollergirl.net/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "fresh-design-blog", + "provider": "Fresh Design Blog", + "endpoint": "https://feeds2.feedburner.com/Fresh. Design. Blog", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "jollydeck", + "provider": "Jolly. Deck", + "endpoint": "https://www.jollydeck.com/resources/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "lifestylelinked", + "provider": "Life. Style. Linked", + "endpoint": "https://lifestylelinked.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "london-review-of-books", + "provider": "London Review of Books", + "endpoint": "https://www.lrb.co.uk/blog/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "marie-claire-uk", + "provider": "Marie Claire UK", + "endpoint": "https://www.marieclaire.co.uk/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "office-breaks", + "provider": "Office Breaks", + "endpoint": "https://office-breaks.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "on-the-think-of", + "provider": "On The Think Of", + "endpoint": "https://onthethinkof.home.blog/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "rocknroll-bride", + "provider": "Rock n Roll Bride", + "endpoint": "https://www.rocknrollbride.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "silverspoon-london", + "provider": "Silver. Spoon London", + "endpoint": "https://www.silverspoonlondon.co.uk/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "hnd-assignment-help-uk-medium", + "provider": "Stories by HND Assignment Help UK", + "endpoint": "https://medium.com/feed/@hndassigenmenthelp", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "tenura", + "provider": "Tenura", + "endpoint": "https://www.tenura.co.uk/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-curry-guy", + "provider": "The Curry Guy", + "endpoint": "https://greatcurryrecipes.net/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "real-talk-uk", + "provider": "The Real Talk UK", + "endpoint": "https://charleyjai-realtalk.blogspot.com/feeds/posts/default?alt=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-stratfordian", + "provider": "The Stratfordian", + "endpoint": "https://thestratfordian.co.uk/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "training-express", + "provider": "Training Express", + "endpoint": "https://www.trainingexpress.org.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "uk-constitutional-law-association", + "provider": "UK Constitutional Law Association", + "endpoint": "https://ukconstitutionallaw.org/blog/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "uk-fundraising-blog", + "provider": "UK Fundraising", + "endpoint": "https://fundraising.co.uk/category/blog/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "uk-human-rights-blog", + "provider": "UK Human Rights Blog", + "endpoint": "https://ukhumanrightsblog.com/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "vershd", + "provider": "Vershd", + "endpoint": "https://vershd.io/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "vuelio-uk", + "provider": "Vuelio", + "endpoint": "https://www.vuelio.com/uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "ctc-sentinel", + "provider": "Combating Terrorism Center at West Point - CTC Sentinel", + "endpoint": "https://ctc.westpoint.edu/ctc-sentinel/", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "gw-program-extremism", + "provider": "George Washington University - Program on Extremism", + "endpoint": "https://extremism.gwu.edu/news", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "telegraph-world-news", + "provider": "The Telegraph a World News", + "endpoint": "https://www.telegraph.co.uk/world-news/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 23, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T14:11:10.963Z", + "lastFailureAt": "2026-04-19T14:11:10.963Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "euronews-europe", + "provider": "Euronews a Europe", + "endpoint": "https://www.euronews.com/news/europe", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 24, + "status": "auto-quarantined", + "reason": "Health score degraded to 24 after repeated failures", + "quarantinedAt": "2026-04-23T03:28:47.210Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 406", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 406", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + } + ] } diff --git a/data/source-remediation-sweep.json b/data/source-remediation-sweep.json index 88379ce1..d408b774 100644 --- a/data/source-remediation-sweep.json +++ b/data/source-remediation-sweep.json @@ -1,11 +1,120 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T11:19:00.278Z", - "totalSourceErrors": 0, - "byCategory": {}, - "byKind": {}, + "generatedAt": "2026-04-24T08:17:25.806Z", + "totalSourceErrors": 3, + "byCategory": { + "moved-temporarily": 2, + "timeout": 1 + }, + "byKind": { + "html": 3 + }, "machineReadableErrorCount": 0, - "htmlErrorCount": 0, - "top20": [], - "sources": [] + "htmlErrorCount": 3, + "top20": [ + { + "id": "austria-interior-ministry-news", + "provider": "Austrian Interior Ministry - News", + "endpoint": "https://www.bmi.gv.at/news.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "category": "moved-temporarily", + "statusKind": "", + "message": "HTTP 503", + "status": 503, + "rankScore": 4, + "suggestedAction": "update source endpoint to redirected final URL", + "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "sourceKind": "html", + "sourceLane": "context", + "sourceRegion": "", + "isMachineReadable": false + }, + { + "id": "austria-interior-ministry-rss-index", + "provider": "Austrian Interior Ministry - RSS Index", + "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "category": "moved-temporarily", + "statusKind": "", + "message": "HTTP 503", + "status": 503, + "rankScore": 4, + "suggestedAction": "update source endpoint to redirected final URL", + "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "sourceKind": "html", + "sourceLane": "context", + "sourceRegion": "", + "isMachineReadable": false + }, + { + "id": "uk-parliament-home-affairs-committee", + "provider": "UK Parliament a Home Affairs Committee (News)", + "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", + "finalUrl": "", + "category": "timeout", + "statusKind": "", + "message": "This operation was aborted", + "status": 0, + "rankScore": 1, + "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", + "replacementCandidate": "", + "sourceKind": "html", + "sourceLane": "oversight", + "sourceRegion": "", + "isMachineReadable": false + } + ], + "sources": [ + { + "id": "austria-interior-ministry-news", + "provider": "Austrian Interior Ministry - News", + "endpoint": "https://www.bmi.gv.at/news.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "category": "moved-temporarily", + "statusKind": "", + "message": "HTTP 503", + "status": 503, + "rankScore": 4, + "suggestedAction": "update source endpoint to redirected final URL", + "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "sourceKind": "html", + "sourceLane": "context", + "sourceRegion": "", + "isMachineReadable": false + }, + { + "id": "austria-interior-ministry-rss-index", + "provider": "Austrian Interior Ministry - RSS Index", + "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "category": "moved-temporarily", + "statusKind": "", + "message": "HTTP 503", + "status": 503, + "rankScore": 4, + "suggestedAction": "update source endpoint to redirected final URL", + "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "sourceKind": "html", + "sourceLane": "context", + "sourceRegion": "", + "isMachineReadable": false + }, + { + "id": "uk-parliament-home-affairs-committee", + "provider": "UK Parliament a Home Affairs Committee (News)", + "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", + "finalUrl": "", + "category": "timeout", + "statusKind": "", + "message": "This operation was aborted", + "status": 0, + "rankScore": 1, + "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", + "replacementCandidate": "", + "sourceKind": "html", + "sourceLane": "oversight", + "sourceRegion": "", + "isMachineReadable": false + } + ] } diff --git a/data/top-20-source-remediation.json b/data/top-20-source-remediation.json index 485dd97d..7358ed1a 100644 --- a/data/top-20-source-remediation.json +++ b/data/top-20-source-remediation.json @@ -1,6 +1,58 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T11:19:00.278Z", - "totalSourceErrors": 0, - "top20": [] + "generatedAt": "2026-04-24T08:17:25.806Z", + "totalSourceErrors": 3, + "top20": [ + { + "id": "austria-interior-ministry-news", + "provider": "Austrian Interior Ministry - News", + "endpoint": "https://www.bmi.gv.at/news.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "category": "moved-temporarily", + "statusKind": "", + "message": "HTTP 503", + "status": 503, + "rankScore": 4, + "suggestedAction": "update source endpoint to redirected final URL", + "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "sourceKind": "html", + "sourceLane": "context", + "sourceRegion": "", + "isMachineReadable": false + }, + { + "id": "austria-interior-ministry-rss-index", + "provider": "Austrian Interior Ministry - RSS Index", + "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "category": "moved-temporarily", + "statusKind": "", + "message": "HTTP 503", + "status": 503, + "rankScore": 4, + "suggestedAction": "update source endpoint to redirected final URL", + "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "sourceKind": "html", + "sourceLane": "context", + "sourceRegion": "", + "isMachineReadable": false + }, + { + "id": "uk-parliament-home-affairs-committee", + "provider": "UK Parliament a Home Affairs Committee (News)", + "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", + "finalUrl": "", + "category": "timeout", + "statusKind": "", + "message": "This operation was aborted", + "status": 0, + "rankScore": 1, + "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", + "replacementCandidate": "", + "sourceKind": "html", + "sourceLane": "oversight", + "sourceRegion": "", + "isMachineReadable": false + } + ] } diff --git a/live-alerts.json b/live-alerts.json index d8125feb..d9e74c19 100644 --- a/live-alerts.json +++ b/live-alerts.json @@ -1,7 +1,7 @@ { - "generatedAt": "2026-04-24T11:19:00.278Z", - "sourceCount": 4, - "alertCount": 181, + "generatedAt": "2026-04-24T08:17:25.806Z", + "sourceCount": 176, + "alertCount": 179, "alerts": [ { "id": "met-police-latest-news-0", @@ -10245,56 +10245,6 @@ "corroborationCount": 1, "isDuplicateOf": "fusion-f289bcaeba8fd554" }, - { - "id": "fixture-atom-oversight-0", - "fusedIncidentId": "fusion-b4a9eb5890206d91", - "title": "Oversight Committee Schedules Counter-Terror Review Hearing", - "location": "Europe", - "region": "europe", - "lane": "oversight", - "severity": "moderate", - "status": "Update", - "actor": "Fixture Oversight Feed", - "subject": "Fixture Oversight Feed", - "happenedWhen": "04 Apr 2026, 11:10", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "Parliamentary committee confirms an oversight hearing on prevention strategy.", - "aiSummary": "Fixture Oversight Feed has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "Parliamentary committee confirms an oversight hearing on prevention strategy.", - "peopleInvolved": [], - "source": "Fixture Oversight Feed", - "sourceUrl": "https://fixtures.albertalert.local/oversight/1", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "04 Apr 2026, 11:10", - "lat": 50, - "lng": 10, - "major": false, - "publishedAt": "2026-04-04T10:10:00.000Z", - "keywordHits": [ - "terror" - ], - "terrorismHits": [ - "terror", - "counter-terror" - ], - "eventType": "oversight_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": -5.8, - "freshnessBucket": 0, - "freshUntil": "2026-04-12T10:10:00.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null - }, { "id": "uk-ncsc-news-4", "fusedIncidentId": "fusion-a4c8d412564d7890", @@ -10576,54 +10526,40 @@ ], "corroborationCount": 1, "isDuplicateOf": "fusion-a705408939c4c725" - }, - { - "id": "fixture-json-prevention-0", - "fusedIncidentId": "fusion-f5cb7bfa16235fcf", - "title": "Community Prevention Workshop Expanded Across Regions", - "location": "Europe", - "region": "international", - "lane": "prevention", - "severity": "moderate", - "status": "Update", - "actor": "Fixture Prevention Feed", - "subject": "Fixture Prevention Feed", - "happenedWhen": "04 Apr 2026, 10:30", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "Prevention specialists announced a new training cycle focused on reporting suspicious behavior.", - "aiSummary": "Fixture Prevention Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "Prevention specialists announced a new training cycle focused on reporting suspicious behavior.", - "peopleInvolved": [], - "source": "Fixture Prevention Feed", - "sourceUrl": "https://fixtures.albertalert.local/prevention/1", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "queueBucket": "prevention", - "time": "04 Apr 2026, 10:30", - "lat": 50, - "lng": 10, - "major": false, - "publishedAt": "2026-04-04T09:30:00.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "prevention_update", - "geoPrecision": "country", - "isOfficial": false, - "priorityScore": -8.3, - "freshnessBucket": 0, - "freshUntil": "2026-04-12T09:30:00.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null } ], - "sourceErrors": [], + "sourceErrors": [ + { + "id": "austria-interior-ministry-rss-index", + "provider": "Austrian Interior Ministry - RSS Index", + "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "status": 503, + "message": "HTTP 503", + "errorCode": "HTTP_STATUS_ERROR", + "category": "http-status-error" + }, + { + "id": "austria-interior-ministry-news", + "provider": "Austrian Interior Ministry - News", + "endpoint": "https://www.bmi.gv.at/news.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "status": 503, + "message": "HTTP 503", + "errorCode": "HTTP_STATUS_ERROR", + "category": "http-status-error" + }, + { + "id": "uk-parliament-home-affairs-committee", + "provider": "UK Parliament a Home Affairs Committee (News)", + "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", + "finalUrl": "", + "status": null, + "message": "This operation was aborted", + "errorCode": "FETCH_TIMEOUT", + "category": "timeout" + } + ], "restoreAudit": null, "geoLookupSnapshot": [ { @@ -12467,44 +12403,87 @@ "lng": 133.7751 } ], - "buildWarning": null, + "buildWarning": "Deferred 368 low-yield source(s) on health cooldown. | Guardrails breached: successful-source-floor-breached (runtime=283557ms, failedRate=0.017, successfulSources=7)", "runMetrics": { "schedulerMode": "candidate", "htmlBudget": 40, "htmlDomainCapPerRun": 3, - "htmlDomainUsage": {}, + "htmlDomainUsage": { + "news.met.police.uk": 2, + "www.avonandsomerset.police.uk": 2, + "www.scotland.police.uk": 1, + "www.psni.police.uk": 1, + "www.westyorkshirepolice.co.uk": 1, + "policie.gov.cz": 1, + "www.politie.nl": 2, + "mossos.gencat.cat": 1, + "www.policia.es": 1, + "www.policiajudiciaria.pt": 1, + "news.camden.gov.uk": 1, + "www.chelwest.nhs.uk": 1, + "www.hounslow.gov.uk": 1, + "www.merton.gov.uk": 1, + "northeastlondon.icb.nhs.uk": 1, + "www.walthamforest.gov.uk": 1, + "www.gov.uk": 3, + "www.mi5.gov.uk": 1, + "community-messaging.dc.police.uk": 1, + "www.bmi.gv.at": 1, + "www.unodc.org": 1, + "www.hillingdon.gov.uk": 1, + "www.homerton.nhs.uk": 1, + "www.kch.nhs.uk": 1, + "www.swlstg.nhs.uk": 1, + "news.npcc.police.uk": 1, + "www.ipco.org.uk": 1, + "hmiprobation.justiceinspectorates.gov.uk": 1, + "www.gov.scot": 1, + "www.dhs.gov": 1, + "www.state.gov": 1, + "ofac.treasury.gov": 1, + "www.verfassungsschutz.de": 1, + "www.interpol.int": 1, + "www.bexley.gov.uk": 1 + }, "coverage": { - "eligible": 4, - "scheduled": 4, - "initialScheduled": 1, - "continuationAttempted": 3, - "checked": 4, - "eligibleCheckedRate": 1, - "scheduledCheckedRate": 1 + "eligible": 547, + "scheduled": 179, + "initialScheduled": 98, + "continuationAttempted": 81, + "checked": 176, + "eligibleCheckedRate": 0.322, + "scheduledCheckedRate": 0.983 }, "freshnessSlaByTier": { "high": { - "count": 1, - "avgMinutes": 0, - "p95Minutes": 0 + "count": 7, + "avgMinutes": 5062, + "p95Minutes": 11000 + }, + "low": { + "count": 12, + "avgMinutes": 6733, + "p95Minutes": 9727 }, "medium": { - "count": 1, - "avgMinutes": 0, - "p95Minutes": 0 + "count": 20, + "avgMinutes": 4992, + "p95Minutes": 11000 } }, "failureReasons": { - "success": 2 + "success": 7, + "unchanged": 4, + "timeout-or-aborted": 4 }, "sourceRunStats": { - "totalConfiguredSources": 4, - "sourcesCheckedThisRun": 4, - "sourcesUpdatedThisRun": 2, - "sourcesFailedThisRun": 0, - "sourcesUnchangedThisRun": 0 + "totalConfiguredSources": 549, + "sourcesCheckedThisRun": 179, + "sourcesUpdatedThisRun": 7, + "sourcesFailedThisRun": 3, + "sourcesUnchangedThisRun": 4 }, - "runDurationMs": 296, + "runDurationMs": 283557, "playwrightFallback": { "attempts": 0, "successes": 0, @@ -12514,19 +12493,21 @@ "guardrails": { "maxRuntimeMs": 720000, "maxFailedSourceRate": 0.65, - "minSuccessfulSources": 1, - "targetSuccessfulSourcesPerRun": 1, - "failedSourceRate": 0, - "successfulSources": 2, - "violations": [], + "minSuccessfulSources": 8, + "targetSuccessfulSourcesPerRun": 60, + "failedSourceRate": 0.017, + "successfulSources": 7, + "violations": [ + "successful-source-floor-breached" + ], "midRun": { "throttleLevel": 0, - "totalAttempted": 4, - "totalFailed": 0, - "totalSuccessful": 2, - "failedRate": 0, - "successRate": 0.5, - "avgSourceDurationMs": 70, + "totalAttempted": 179, + "totalFailed": 3, + "totalSuccessful": 7, + "failedRate": 0.017, + "successRate": 0.039, + "avgSourceDurationMs": 1584, "criticalOnly": false, "skipPlaywright": false, "transitions": [] @@ -12536,187 +12517,22536 @@ "health": { "expectedRefreshMinutes": 30, "staleAfterMinutes": 50, - "lastAttemptedRefreshTime": "2026-04-24T11:19:00.278Z", + "lastAttemptedRefreshTime": "2026-04-24T08:17:25.806Z", "usedFallback": false, - "lastSuccessfulRefreshTime": "2026-04-24T11:19:00.278Z", - "lastSuccessfulRunId": "24886716469", - "lastSuccessfulRunNumber": "366", + "lastSuccessfulRefreshTime": "2026-04-24T08:17:25.806Z", + "lastSuccessfulRunId": "24879386517", + "lastSuccessfulRunNumber": "510", "lastSuccessfulRunAttempt": "1", - "lastSuccessfulHeadSha": "a335cf014f6a37ba8f3bdb997e9d7f64e291750e", - "lastSuccessfulEvent": "dynamic", - "lastSuccessfulSourceCount": 4, - "sourceErrorCount": 0, - "hasWarnings": false, - "autoDeferredSourceCount": 0, - "autoDeferredSources": [], + "lastSuccessfulHeadSha": "4b91e9681a86e06ecb9443c627b7b278419b21ca", + "lastSuccessfulEvent": "schedule", + "lastSuccessfulSourceCount": 176, + "sourceErrorCount": 3, + "hasWarnings": true, + "autoDeferredSourceCount": 368, + "autoDeferredSources": [ + { + "id": "frontex-news-releases", + "provider": "Frontex a News Releases", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "bdk-rss", + "provider": "Bund Deutscher Kriminalbeamter - RSS", + "reason": "health-deprioritised", + "until": "2026-04-25T14:03:06.243Z", + "statusKind": "cooled_down" + }, + { + "id": "belgium-crisis-centre-news", + "provider": "Belgian National Crisis Centre - Newsroom", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "denmark-pet-news", + "provider": "Danish Security and Intelligence Service - News", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "ecfr-feeds-index", + "provider": "ECFR - Feeds", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "enisa-news", + "provider": "ENISA (EU Cybersecurity Agency) a News", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "enisa-rss-transition-page", + "provider": "ENISA - RSS Feeds Transition Notice", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "euiss-home", + "provider": "EU Institute for Security Studies", + "reason": "health-deprioritised", + "until": "2026-04-24T18:01:25.327Z", + "statusKind": "cooled_down" + }, + { + "id": "euractiv-security-rss", + "provider": "BBC News - Europe", + "reason": "health-deprioritised", + "until": "2026-04-25T14:03:06.243Z", + "statusKind": "cooled_down" + }, + { + "id": "eurojust-press-news-html", + "provider": "Eurojust - Press Releases and News", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "eurojust-press-releases", + "provider": "Eurojust - Press Releases", + "reason": "health-deprioritised", + "until": "2026-04-25T18:02:43.923Z", + "statusKind": "cooled_down" + }, + { + "id": "europol-media-press", + "provider": "Europol a Media and Press", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "europol-newsroom-html", + "provider": "Europol - Newsroom", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "finland-supo-news", + "provider": "Finnish Security Intelligence Service - News", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "german-bfv-news", + "provider": "German BfV - Press", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "german-interior-ministry-press", + "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", + "reason": "health-deprioritised", + "until": "2026-04-25T10:13:21.253Z", + "statusKind": "cooled_down" + }, + { + "id": "icct-home", + "provider": "ICCT - Home", + "reason": "health-deprioritised", + "until": "2026-04-24T18:01:25.327Z", + "statusKind": "cooled_down" + }, + { + "id": "nctv-english-rss", + "provider": "NCTV Netherlands - English RSS", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "paris-prefecture-police-rss-page", + "provider": "Paris Prefecture of Police - RSS", + "reason": "health-deprioritised", + "until": "2026-04-25T10:13:21.253Z", + "statusKind": "cooled_down" + }, + { + "id": "spain-interior-ministry-news", + "provider": "Spanish Ministry of the Interior - Press", + "reason": "health-deprioritised", + "until": "2026-04-25T10:13:21.253Z", + "statusKind": "cooled_down" + }, + { + "id": "statewatch-news", + "provider": "Statewatch - News", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "breakingnews-ie", + "provider": "BreakingNews.ie", + "reason": "health-deprioritised", + "until": "2026-04-24T18:01:25.327Z", + "statusKind": "cooled_down" + }, + { + "id": "independent-ie", + "provider": "Independent.ie", + "reason": "health-deprioritised", + "until": "2026-04-24T18:01:25.327Z", + "statusKind": "cooled_down" + }, + { + "id": "belgian-federal-police-news", + "provider": "Belgian Federal Police - News", + "reason": "health-deprioritised", + "until": "2026-04-25T11:47:27.254Z", + "statusKind": "cooled_down" + }, + { + "id": "ertzaintza-news", + "provider": "Ertzaintza - News", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + } + ], "operationalDeferredSourceCount": 0, "operationalDeferredSources": [], "sourceRunStats": { - "totalConfiguredSources": 4, - "sourcesCheckedThisRun": 4, - "sourcesUpdatedThisRun": 2, - "sourcesFailedThisRun": 0, - "sourcesUnchangedThisRun": 0 + "totalConfiguredSources": 549, + "sourcesCheckedThisRun": 179, + "sourcesUpdatedThisRun": 7, + "sourcesFailedThisRun": 3, + "sourcesUnchangedThisRun": 4 }, "extraMetrics": { "schedulerMode": "candidate", "coverage": { - "eligible": 4, - "scheduled": 4, - "initialScheduled": 1, - "continuationAttempted": 3, - "checked": 4, - "eligibleCheckedRate": 1, - "scheduledCheckedRate": 1 + "eligible": 547, + "scheduled": 179, + "initialScheduled": 98, + "continuationAttempted": 81, + "checked": 176, + "eligibleCheckedRate": 0.322, + "scheduledCheckedRate": 0.983 }, "freshnessSlaByTier": { "high": { - "count": 1, - "avgMinutes": 0, - "p95Minutes": 0 + "count": 7, + "avgMinutes": 5062, + "p95Minutes": 11000 + }, + "low": { + "count": 12, + "avgMinutes": 6733, + "p95Minutes": 9727 }, "medium": { - "count": 1, - "avgMinutes": 0, - "p95Minutes": 0 + "count": 20, + "avgMinutes": 4992, + "p95Minutes": 11000 } }, "failureReasons": { - "success": 2 + "success": 7, + "unchanged": 4, + "timeout-or-aborted": 4 }, "sourceRunStats": { - "totalConfiguredSources": 4, - "sourcesCheckedThisRun": 4, - "sourcesUpdatedThisRun": 2, - "sourcesFailedThisRun": 0, - "sourcesUnchangedThisRun": 0 + "totalConfiguredSources": 549, + "sourcesCheckedThisRun": 179, + "sourcesUpdatedThisRun": 7, + "sourcesFailedThisRun": 3, + "sourcesUnchangedThisRun": 4 }, "playwrightFallback": { "attempts": 0, "successes": 0 }, - "guardrailViolations": [], + "guardrailViolations": [ + "successful-source-floor-breached" + ], "midRunGuardrail": { "throttleLevel": 0, - "totalAttempted": 4, - "totalFailed": 0, - "totalSuccessful": 2, - "failedRate": 0, - "successRate": 0.5, - "avgSourceDurationMs": 70, + "totalAttempted": 179, + "totalFailed": 3, + "totalSuccessful": 7, + "failedRate": 0.017, + "successRate": 0.039, + "avgSourceDurationMs": 1584, "criticalOnly": false, "skipPlaywright": false, "transitions": [] } }, "sourceHealth": { - "fixture-rss-incidents": { - "provider": "Fixture Incidents Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T11:19:00.278Z", + "euaa-news": { + "provider": "EUAA (EU Agency for Asylum) - Press Releases", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", "lastBuiltCount": 0, "successfulRuns": 0, - "emptyRuns": 1, + "emptyRuns": 80, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, + "consecutiveEmptyRuns": 80, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T11:19:00.278Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 77, - "quarantined": false, + "healthScore": 0, + "quarantined": true, "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T12:16:00.278Z" + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" }, - "fixture-rss-context": { - "provider": "Fixture Context Feed", - "lane": "context", + "eulisa-news-events": { + "provider": "eu-LISA - News and Events (RSS)", + "lane": "border", "kind": "rss", - "lastCheckedAt": "2026-04-24T11:19:00.278Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", "lastBuiltCount": 0, "successfulRuns": 0, - "emptyRuns": 1, + "emptyRuns": 80, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, + "consecutiveEmptyRuns": 80, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T11:19:00.278Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 77, - "quarantined": false, + "healthScore": 0, + "quarantined": true, "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T13:56:00.278Z" + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" }, - "fixture-atom-oversight": { - "provider": "Fixture Oversight Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T11:19:00.278Z", - "lastBuiltCount": 1, - "successfulRuns": 1, + "frontex-news-releases": { + "provider": "Frontex a News Releases", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "austria-interior-ministry-news": { + "provider": "Austrian Interior Ministry - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 79, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 503", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-24T08:17:25.806Z" + } + ], + "cooldownUntil": "2026-04-26T08:17:25.806Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T08:17:25.806Z" + }, + "austria-interior-ministry-rss-index": { + "provider": "Austrian Interior Ministry - RSS Index", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 79, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 503", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-24T08:17:25.806Z" + } + ], + "cooldownUntil": "2026-04-26T08:17:25.806Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T08:17:25.806Z" + }, + "bdk-rss": { + "provider": "Bund Deutscher Kriminalbeamter - RSS", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "belgium-crisis-centre-news": { + "provider": "Belgian National Crisis Centre - Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-17T20:09:53.653Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T20:09:53.653Z", + "quarantineReason": "Health score degraded to 5 after repeated failures", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "denmark-pet-news": { + "provider": "Danish Security and Intelligence Service - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ecfr-feeds-index": { + "provider": "ECFR - Feeds", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "enisa-news": { + "provider": "ENISA (EU Cybersecurity Agency) a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "enisa-rss-transition-page": { + "provider": "ENISA - RSS Feeds Transition Notice", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "euiss-home": { + "provider": "EU Institute for Security Studies", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, + "consecutiveEmptyRuns": 21, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T11:19:00.278Z", + "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 90, - "quarantined": false, + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T11:57:00.278Z" + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" }, - "fixture-json-prevention": { - "provider": "Fixture Prevention Feed", - "lane": "prevention", - "kind": "json", - "lastCheckedAt": "2026-04-24T11:19:00.278Z", - "lastBuiltCount": 1, - "successfulRuns": 1, + "euractiv-security-rss": { + "provider": "BBC News - Europe", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eurojust-press-news-html": { + "provider": "Eurojust - Press Releases and News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eurojust-press-releases": { + "provider": "Eurojust - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 72, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T16:07:40.227Z", + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "europol-media-press": { + "provider": "Europol a Media and Press", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "europol-news-rss": { + "provider": "Europol - Newsroom (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, + "consecutiveEmptyRuns": 80, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T11:19:00.278Z", + "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 90, - "quarantined": false, + "healthScore": 0, + "quarantined": true, "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T14:47:00.278Z" + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "europol-newsroom-html": { + "provider": "Europol - Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "finland-supo-news": { + "provider": "Finnish Security Intelligence Service - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "german-bfv-news": { + "provider": "German BfV - Press", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "german-interior-ministry-press": { + "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 400", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Health score degraded to 20 after repeated failures", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "icct-home": { + "provider": "ICCT - Home", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nctv-english-rss": { + "provider": "NCTV Netherlands - English RSS", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "paris-prefecture-police-rss-page": { + "provider": "Paris Prefecture of Police - RSS", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "spain-interior-ministry-news": { + "provider": "Spanish Ministry of the Interior - Press", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "statewatch-news": { + "provider": "Statewatch - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "breakingnews-ie": { + "provider": "BreakingNews.ie", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "independent-ie": { + "provider": "Independent.ie", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "belgian-federal-police-news": { + "provider": "Belgian Federal Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T11:47:27.254Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 11, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T11:47:27.254Z", + "lastEmptyAt": "2026-04-23T10:13:21.253Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T11:47:27.254Z" + } + ], + "cooldownUntil": "2026-04-25T11:47:27.254Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-25T11:47:27.254Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "czech-police-news": { + "provider": "Police of the Czech Republic - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "dutch-police-rss-index": { + "provider": "Politie.nl - RSS", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "ertzaintza-news": { + "provider": "Ertzaintza - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "finland-police-news": { + "provider": "Finnish Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "german-bka-press": { + "provider": "German BKA - Press Releases (2026 archive)", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-17T20:09:53.653Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T20:09:53.653Z", + "quarantineReason": "Health score degraded to 5 after repeated failures", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "german-bka-press-releases-de": { + "provider": "BKA Germany - Press Releases", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T17:39:27.641Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 15, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastEmptyAt": "2026-04-22T16:17:11.443Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T07:32:24.475Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "cooldownUntil": "2026-04-24T17:39:27.641Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T08:04:04.612Z", + "quarantineReason": "Infrastructure instability — mixed timeout and network errors; auto-retry likely to recover", + "nextFetchAt": "2026-04-24T17:39:27.641Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "guardia-civil-news": { + "provider": "El Pais English - Guardia Civil", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "mossos-news": { + "provider": "Mossos d'Esquadra - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "paris-prefecture-police-press-releases": { + "provider": "Paris Prefecture of Police - Press Releases", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "policia-nacional-news": { + "provider": "Policia Nacional - Press", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T18:05:04.781Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-17T20:09:53.653Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-19T18:05:04.781Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T20:09:53.653Z", + "quarantineReason": "Health score degraded to 5 after repeated failures", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "romanian-police-news": { + "provider": "Romanian Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "curia-press-rss-en": { + "provider": "Court of Justice of the European Union - RSS (EN/FR)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 65, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T23:56:26.571Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-25T03:28:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T03:28:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eppo-news-node-7": { + "provider": "European Public Prosecutor's Office - News (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 75, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-cellar-rss-atom": { + "provider": "Publications Office of the European Union (CELLAR) a RSS/Atom Feeds", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 13, + "emptyRuns": 61, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T23:56:26.571Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-25T03:28:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T03:28:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-commission-counter-terrorism-measures-2026": { + "provider": "European Commission - Counter Terrorism Measures 2026", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-commission-home-affairs-topic": { + "provider": "European Commission - Home Affairs", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-commission-presscorner-home": { + "provider": "Council of the EU - Press Releases (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-council-fight-against-terrorism": { + "provider": "Council of the EU - Fight Against Terrorism", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-council-jha-meetings": { + "provider": "Council of the EU - JHA Press Releases", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 72, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T16:07:40.227Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-council-jha-register-rss": { + "provider": "Council of the EU - Latest Documents RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-council-press-releases": { + "provider": "Council of the European Union a Press Releases (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-council-press-releases-html": { + "provider": "Council of the EU - Press Releases", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 75, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-council-rss-index": { + "provider": "Council of the EU - RSS Index", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-ct-coordinator": { + "provider": "EU Counter-Terrorism Coordinator a Council of the EU", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-ejustice-news-rss": { + "provider": "European e-Justice - News RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 57, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 34, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-18T13:27:18.679Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-18T13:27:18.679Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-eppo-news": { + "provider": "European Public Prosecutor's Office - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-fra-rss": { + "provider": "EU Agency for Fundamental Rights (FRA) a RSS", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-21T11:46:02.615Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-home-affairs-news": { + "provider": "European Commission a Home Affairs News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-olaf-news": { + "provider": "OLAF (EU Anti-Fraud Office) a News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-security-union-strategy": { + "provider": "European Commission a Security Union Strategy", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eucrim-counter-terrorism-agenda": { + "provider": "eucrim - Commission Counter Terrorism Agenda", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eucrim-judicial-counter-terrorism-register": { + "provider": "eucrim - Judicial Counter Terrorism Register", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eurojust-publications": { + "provider": "Eurojust a Publications (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 1, + "successfulRuns": 105, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eurojust-rss-feeds-page": { + "provider": "Eurojust - RSS Feeds", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "europarl-committee-libe": { + "provider": "European Parliament - LIBE Press Releases", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 75, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "europarl-committee-sede": { + "provider": "European Parliament - SEDE Press Releases", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "europarl-pressreleases-committees": { + "provider": "European Parliament a Press Releases (Committees) (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "europol-tesat-report": { + "provider": "Europol - TESAT Report", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "fra-rss": { + "provider": "Human Rights Watch - News RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "europol-eu-iru": { + "provider": "Europol a EU Internet Referral Unit (EU IRU)", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "isd-global-publications": { + "provider": "ISD - Publications", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ncsc-nl-rss": { + "provider": "NCSC Netherlands - RSS", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-council-terrorism-sanctions": { + "provider": "Council of the EU - Sanctions Against Terrorism", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "unhcr-europe-news": { + "provider": "UNHCR Europe a News", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "clingendael-publications": { + "provider": "Clingendael Institute a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "dw-europe-rss": { + "provider": "Deutsche Welle a Europe (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ecfr-publications": { + "provider": "European Council on Foreign Relations (ECFR) a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "euronews-europe": { + "provider": "Euronews a Europe", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 28, + "emptyRuns": 21, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-22T22:53:26.529Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 406", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 406", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-24T13:04:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 24, + "quarantined": true, + "quarantinedAt": "2026-04-23T03:28:47.210Z", + "quarantineReason": "Health score degraded to 24 after repeated failures", + "nextFetchAt": "2026-04-24T13:04:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "financial-times-world": { + "provider": "Financial Times a World", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "france24-europe-rss": { + "provider": "France 24 a Europe (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T05:47:56.833Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 11, + "failedRuns": 4, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T05:47:56.833Z", + "lastEmptyAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T11:15:29.208Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T16:03:49.134Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T06:12:01.477Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T05:47:56.833Z" + } + ], + "cooldownUntil": "2026-04-25T05:47:56.833Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-19T16:03:49.134Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T05:47:56.833Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "french-interior-ministry-news": { + "provider": "French Ministry of the Interior - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "icct-perspectives-on-terrorism": { + "provider": "Perspectives on Terrorism (ICCT) a Journal", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "icct-publications": { + "provider": "International Centre for Counter-Terrorism (ICCT) - Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "netherlands-nctv-news": { + "provider": "Dutch NCTV - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "norway-pst-news": { + "provider": "Norwegian Government - News and Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 72, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T16:07:40.227Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "politico-europe": { + "provider": "Politico Europe", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rte-ireland-news-rss": { + "provider": "RTE News - Ireland (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 2, + "emptyRuns": 9, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T11:47:27.254Z", + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 5, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T11:17:25.806Z" + }, + "switzerland-fedpol-news": { + "provider": "Swiss fedpol - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T21:59:30.032Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 5, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T21:59:30.032Z", + "lastEmptyAt": "2026-04-22T20:37:31.462Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-22T21:59:30.032Z" + } + ], + "cooldownUntil": "2026-04-24T21:59:30.032Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T21:59:30.032Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "telegraph-world-news": { + "provider": "The Telegraph a World News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 30, + "emptyRuns": 27, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 4, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T16:07:40.227Z", + "lastFailureAt": "2026-04-19T14:11:10.963Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T08:15:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 23, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T08:15:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "vox-pol-publications": { + "provider": "VOX-Pol Network a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "french-gendarmerie-news": { + "provider": "Gendarmerie Nationale - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "french-police-nationale-news": { + "provider": "Police Nationale - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ireland-gardai-press": { + "provider": "An Garda Siochana - Press Releases", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "netherlands-police-news": { + "provider": "Dutch National Police - News (EN)", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "paris-police-prefecture-news": { + "provider": "France24 - France (RSS)", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "portugal-pj-news": { + "provider": "Policia Judiciaria Portugal - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 43, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T15:59:44.503Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T19:18:33.309Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T15:59:44.503Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "portugal-psp-news": { + "provider": "The Portugal News - Crime", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "coe-counter-terrorism": { + "provider": "Council of Europe a Counter-Terrorism", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "echr-key-judgments-rss": { + "provider": "European Court of Human Rights - Key Judgments RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-22T17:39:27.641Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 60, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastEmptyAt": "2026-04-22T16:17:11.443Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 400", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "cooldownUntil": "2026-04-24T17:39:27.641Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T17:39:27.641Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "echr-press-releases-rss": { + "provider": "European Court of Human Rights - Press Releases RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "french-justice-ministry-news": { + "provider": "French Ministry of Justice - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "netherlands-prosecution-news": { + "provider": "Dutch Public Prosecution Service - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bfv-de-english": { + "provider": "BfV service page (Federal Office for the Protection of the Constitution)", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 67, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 56, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-17T11:07:28.674Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-17T11:07:28.674Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "dsn-at-english": { + "provider": "DSN Austria - Aktuelles", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "isd-global": { + "provider": "Institute for Strategic Dialogue (ISD) a Articles & Reports", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ocam-be-english": { + "provider": "CUTA (Belgium) threat analysis", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 19, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T16:07:40.227Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T22:54:57.851Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "pet-dk-english": { + "provider": "PET (Denmark) a English News", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "pst-no-english": { + "provider": "PST (Norway) English reporting page", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ran-network": { + "provider": "RUSI - Terrorism and Conflict", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "sapo-se-english": { + "provider": "Swedish Security Service English news", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "supo-fi-english": { + "provider": "SUPO Finland news and press releases", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "iom-news": { + "provider": "IOM (International Organization for Migration) a News", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "acled-updates": { + "provider": "ACLED a Updates and Analysis", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "aljazeera-news-rss": { + "provider": "Al Jazeera English a Top Stories (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 24, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T10:13:21.253Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 3, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T11:55:25.806Z" + }, + "ap-top-news": { + "provider": "BBC News - Top Stories", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bbc-news-world": { + "provider": "BBC News a World", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bbc-news-world-legacy": { + "provider": "BBC News a World (Legacy RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bellingcat": { + "provider": "Bellingcat a Investigations", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chatham-house-rss": { + "provider": "Chatham House a Research & Commentary (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 7, + "emptyRuns": 11, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T14:03:06.243Z", + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 40, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chathamhouse-events": { + "provider": "Chatham House a Events (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chathamhouse-intl-security-feed": { + "provider": "Chatham House a International Security Programme (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 5, + "emptyRuns": 28, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T14:03:06.243Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 46, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chathamhouse-news-releases": { + "provider": "Chatham House a News Releases (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "counter-extremism-project-news": { + "provider": "Counter Extremism Project a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 5, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T11:15:29.208Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T12:14:24.733Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T21:04:21.166Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "crisis-group": { + "provider": "International Crisis Group a Research & Analysis", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "crisis-group-europe": { + "provider": "International Crisis Group a Europe (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "global-initiative-news": { + "provider": "Global Initiative Against Transnational Organized Crime a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "interpol-news-events": { + "provider": "INTERPOL a News and Events", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "just-security": { + "provider": "Just Security a Law, Rights & National Security", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 3, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T23:55:39.351Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T09:29:55.311Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T04:05:33.139Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T09:29:55.311Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "lawfare-blog": { + "provider": "Just Security - National Security Analysis", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "long-war-journal": { + "provider": "Long War Journal a News Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T22:53:56.180Z", + "lastBuiltCount": 0, + "successfulRuns": 6, + "emptyRuns": 17, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", + "lastFailureAt": "2026-04-18T00:05:41.686Z", + "lastEmptyAt": "2026-04-23T22:53:56.180Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T10:53:56.180Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 29, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T10:53:56.180Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nato-news-rss": { + "provider": "NATO a News (RSS)", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "occrp-news": { + "provider": "OCCRP a Organized Crime and Corruption Reporting Project", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T07:21:41.099Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T08:39:19.161Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "osce-press-releases": { + "provider": "OSCE a Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "resolve-network-research": { + "provider": "RESOLVE Network a Research", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 503", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Health score degraded to 17 after repeated failures", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "reuters-uk": { + "provider": "Reuters a UK News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rferl-security-news-rss": { + "provider": "Radio Free Europe/Radio Liberty a Security (RSS)", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T22:53:56.180Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 10, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastEmptyAt": "2026-04-23T22:53:56.180Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T07:21:41.099Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T08:39:19.161Z" + } + ], + "cooldownUntil": "2026-04-24T10:53:56.180Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T10:53:56.180Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "soufan-center-intelbrief": { + "provider": "The Soufan Center a IntelBrief", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tech-against-terrorism-podcast": { + "provider": "Tech Against Terrorism - Podcast", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tony-blair-institute-news": { + "provider": "Tony Blair Institute for Global Change a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "unodc-news": { + "provider": "UNODC (UN Office on Drugs and Crime) a Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "war-on-the-rocks": { + "provider": "War on the Rocks a National Security & CT Analysis", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gctf-news": { + "provider": "Global Counterterrorism Forum (GCTF) a News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T04:05:33.139Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "unoct-news": { + "provider": "UN Office of Counter-Terrorism (UNOCT) - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "unsc-counter-terrorism-committee": { + "provider": "UN Security Council - Counter-Terrorism Committee (CTC) Updates", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gnet-artificial-intelligence-rss": { + "provider": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 76, + "emptyRuns": 12, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T20:17:25.806Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 64, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T20:17:25.806Z" + }, + "gnet-radicalisation-rss": { + "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-16T16:57:11.406Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T21:08:30.446Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gnet-youth-rss": { + "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-22T17:39:27.641Z", + "lastBuiltCount": 0, + "successfulRuns": 5, + "emptyRuns": 0, + "failedRuns": 10, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T08:04:04.612Z", + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T11:07:28.674Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T12:15:37.169Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T22:00:46.520Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T17:16:47.386Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "cooldownUntil": "2026-04-24T17:39:27.641Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T22:00:46.520Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T17:39:27.641Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tech-against-terrorism": { + "provider": "Tech Against Terrorism a Blog", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tech-against-terrorism-home": { + "provider": "Tech Against Terrorism - Home", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "fatf-news": { + "provider": "Financial Action Task Force (FATF) a News", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "interpol-notices": { + "provider": "INTERPOL a Notices", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "unsc-1267-press-releases": { + "provider": "UN Security Council - ISIL/Da'esh & Al-Qaeda Sanctions Committee Press Releases", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "unsc-consolidated-list": { + "provider": "UN Security Council - Consolidated Sanctions List Updates (RSS)", + "lane": "sanctions", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "barking-dagenham-council-news": { + "provider": "Barking and Dagenham Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 2, + "failedRuns": 6, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 4, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "barnet-council-news": { + "provider": "Barnet Post", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "barts-health-news": { + "provider": "Barts Health NHS Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T08:09:12.931Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 9, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T08:09:12.931Z", + "lastEmptyAt": "2026-04-23T05:47:56.833Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T08:09:12.931Z" + } + ], + "cooldownUntil": "2026-04-25T08:09:12.931Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-25T08:09:12.931Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bbc-news-london-rss": { + "provider": "BBC News - London RSS", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 28, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 17, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-18T23:43:16.267Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 49, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bexley-council-news": { + "provider": "Bexley Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "brent-council-news": { + "provider": "Brent Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "bromley-council-news": { + "provider": "Bromley Council a Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "camden-council-news": { + "provider": "Camden Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "chelsea-westminster-news": { + "provider": "Chelsea and Westminster Hospital NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "city-of-london-police-fraud-reporting": { + "provider": "City of London Police - Fraud Reporting", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cnwl-news": { + "provider": "Central and North West London NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "croydon-council-news": { + "provider": "Croydon Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "ealing-council-news": { + "provider": "Ealing Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 57, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 29, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": "2026-04-18T21:09:53.488Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T21:09:53.488Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "east-london-nhs-news": { + "provider": "East London NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "enfield-council-news": { + "provider": "Enfield Council a News and Events", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gosh-news": { + "provider": "Great Ormond Street Hospital a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "guys-st-thomas-news": { + "provider": "Guy's and St Thomas' NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "hackney-council-news": { + "provider": "Hackney Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "hammersmith-fulham-news": { + "provider": "Hammersmith and Fulham Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 2, + "failedRuns": 6, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "haringey-council-news": { + "provider": "Haringey Community Press", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "harrow-council-news": { + "provider": "Harrow Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "havering-council-news": { + "provider": "Havering Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "heathrow-media-centre": { + "provider": "Heathrow a Media Centre", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "hillingdon-council-news": { + "provider": "Hillingdon Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "homerton-healthcare-news": { + "provider": "Homerton Healthcare NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "hounslow-council-news": { + "provider": "Hounslow Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "imperial-healthcare-news": { + "provider": "Imperial College Healthcare NHS Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "islington-council-news": { + "provider": "Islington Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "kensington-chelsea-newsroom": { + "provider": "Royal Borough of Kensington and Chelsea a Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "kings-college-hospital-news": { + "provider": "King's College Hospital NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "kingston-council-news": { + "provider": "Kingston Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 67, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-21T08:24:19.478Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "lambeth-council-news": { + "provider": "Lambeth Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "lewisham-council-news": { + "provider": "Salamander News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "lnwh-news": { + "provider": "London North West University Healthcare NHS Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "london-ambulance-news": { + "provider": "London Ambulance Service a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-city-airport-media-centre": { + "provider": "London City Airport a Media Centre", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-councils-news": { + "provider": "London Councils a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-fire-brigade-news": { + "provider": "London Fire Brigade a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-gov-home": { + "provider": "London.gov.uk", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-gov-press-releases-html": { + "provider": "London.gov.uk - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-gov-rss-80603": { + "provider": "Greater London Authority a RSS Feed 80603", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "london-gov-rss-80632": { + "provider": "Greater London Authority a RSS Feed 80632", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "mayor-of-london-press-releases": { + "provider": "Mayor of London a Press Releases", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "merton-council-news": { + "provider": "Merton Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 67, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-21T08:24:19.478Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "met-police-the-met-tag": { + "provider": "Metropolitan Police - The Met Tag", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 13, + "emptyRuns": 76, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "moorfields-news": { + "provider": "Moorfields Eye Hospital NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "nelft-news": { + "provider": "North East London NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "newham-council-news": { + "provider": "Newham Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "nhs-london-ncl-news": { + "provider": "NHS North Central London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nhs-london-nel-news": { + "provider": "NHS North East London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 67, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-21T10:07:46.576Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T10:07:46.576Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "nhs-london-nwl-news": { + "provider": "NHS North West London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "nhs-london-sel-news": { + "provider": "NHS South East London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nhs-london-swl-news": { + "provider": "NHS South West London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "north-middlesex-news": { + "provider": "North Middlesex University Hospital a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "oxleas-news": { + "provider": "Oxleas NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "port-of-london-authority-news": { + "provider": "Port of London Authority a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "redbridge-council-news": { + "provider": "Redbridge Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "richmond-council-news": { + "provider": "Richmond Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 65, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T23:56:26.571Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-25T03:28:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T03:28:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "royal-free-london-news": { + "provider": "Royal Free London NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "royal-greenwich-news": { + "provider": "Royal Borough of Greenwich a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 2, + "failedRuns": 6, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 4, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "slam-news": { + "provider": "South London and Maudsley NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "southwark-newsroom": { + "provider": "Southwark Council a Newsroom", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "st-georges-news": { + "provider": "St George's University Hospitals NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "sutton-council-news": { + "provider": "Sutton Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "swlstg-news": { + "provider": "South West London and St George's Mental Health NHS Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "tavistock-portman-news": { + "provider": "Tavistock and Portman NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tfl-press-releases": { + "provider": "Transport for London - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tfl-press-releases-html": { + "provider": "Transport for London - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tower-hamlets-council-news": { + "provider": "Tower Hamlets Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uclh-news": { + "provider": "University College London Hospitals a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 58, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-21T11:46:02.615Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "waltham-forest-council-news": { + "provider": "Waltham Forest Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "wandsworth-council-news": { + "provider": "Wandsworth Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 65, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T23:56:26.571Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-25T03:28:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T03:28:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "westminster-city-council-news": { + "provider": "Westminster City Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "whittington-health-news": { + "provider": "Whittington Health a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "city-of-london-police-news": { + "provider": "National Crime Agency - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "city-of-london-police-news-html": { + "provider": "City of London Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "city-of-london-police-newsroom": { + "provider": "Metropolitan Police Service - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ct-policing-london": { + "provider": "Counter Terrorism Policing London", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "met-police-latest-news": { + "provider": "Metropolitan Police - Latest News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 1, + "successfulRuns": 106, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "met-police-news": { + "provider": "Metropolitan Police Service a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 1, + "successfulRuns": 106, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "london-assembly-press-releases": { + "provider": "London Assembly a Press Releases", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "mopac-html": { + "provider": "Mayor's Office for Policing and Crime", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-resilience": { + "provider": "Resilience First - Latest Updates", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T23:56:26.571Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 17, + "failedRuns": 4, + "consecutiveFailures": 2, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T23:56:26.571Z", + "lastEmptyAt": "2026-04-20T11:00:44.891Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T23:15:54.554Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-22T23:56:26.571Z" + } + ], + "cooldownUntil": "2026-04-24T23:56:26.571Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T23:56:26.571Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gov-uk-fcdo-travel-advice": { + "provider": "FCDO a Foreign Travel Advice Index", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-border-force": { + "provider": "Border Force (UK) a Announcements and Publications", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-ukvi": { + "provider": "UK Visas and Immigration a Announcements and Publications", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "bbc-news-england-legacy": { + "provider": "BBC News a England (Legacy RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 29, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 18, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-18T11:15:29.208Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 3, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bbc-news-front-page-legacy": { + "provider": "BBC News a Front Page (Legacy RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 25, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 15, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-17T22:12:37.099Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bbc-news-uk": { + "provider": "BBC News a UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 26, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 16, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-17T22:12:37.099Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bbc-news-uk-politics-legacy": { + "provider": "BBC News a UK Politics (Legacy RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 10, + "failedRuns": 4, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-17T09:48:51.002Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T03:30:54.684Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T15:59:44.503Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-19T03:30:54.684Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chatham-house-home": { + "provider": "Chatham House", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chatham-house-security-defence": { + "provider": "Chatham House - Security and Defence", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "essex-police-news": { + "provider": "Essex Police a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gov-uk-defence-intelligence": { + "provider": "UK Defence Intelligence a GOV.UK", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-terrorism-search": { + "provider": "GOV.UK Search - Terrorism", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "guardian-uk": { + "provider": "The Guardian a UK News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T21:58:03.349Z", + "lastBuiltCount": 0, + "successfulRuns": 23, + "emptyRuns": 37, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T05:47:56.833Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-23T21:58:03.349Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T09:58:03.349Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 48, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:58:03.349Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "henry-jackson-society-news": { + "provider": "RUSI - Terrorism and Conflict", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "hope-not-hate-home": { + "provider": "Hope not hate podcast", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "institute-global-home": { + "provider": "Institute for Global Change", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "kent-police-news": { + "provider": "Kent Police a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "mi5-news": { + "provider": "National Crime Agency - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "mi5-news-rss-direct": { + "provider": "MI5 - News RSS", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "national-crime-agency-news": { + "provider": "National Crime Agency a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "npcc-releases": { + "provider": "National Police Chiefs' Council - Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "police-uk-all-crime-leicester": { + "provider": "Police.uk - Street Crime Around Leicester", + "lane": "context", + "kind": "json", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 79, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 73, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T23:55:39.351Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T23:55:39.351Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "police-uk-stops-force-leicestershire": { + "provider": "Police.uk - Force Stops (Leicestershire)", + "lane": "context", + "kind": "json", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "police-uk-stops-street-leicester": { + "provider": "Police.uk - Street Stops Around Leicester", + "lane": "context", + "kind": "json", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "report-fraud-home": { + "provider": "Report Fraud", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "report-fraud-newsroom": { + "provider": "Report Fraud - Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rusi-home": { + "provider": "RUSI", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 2, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T03:30:54.684Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T03:30:54.684Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-19T03:30:54.684Z", + "quarantineReason": "Health score degraded to 20 after repeated failures", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rusi-publications": { + "provider": "RUSI (Royal United Services Institute) a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rusi-terrorism-conflict": { + "provider": "RUSI - Terrorism and Conflict", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T03:29:13.488Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 11, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T12:14:24.733Z", + "lastEmptyAt": "2026-04-24T03:29:13.488Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T11:15:29.208Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T12:14:24.733Z" + } + ], + "cooldownUntil": "2026-04-24T15:29:13.488Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T21:04:21.166Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T15:29:13.488Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "skwawkbox": { + "provider": "Skwawkbox", + "lane": "context", + "kind": "playwright_html", + "lastCheckedAt": "2026-04-16T22:57:09.120Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 3, + "consecutiveFailures": 3, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T22:57:09.120Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T22:57:09.120Z" + } + ], + "cooldownUntil": "2026-04-24T09:24:00.000Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 32, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:24:00.000Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "sky-news-uk-rss": { + "provider": "Sky News UK a Top Stories (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 35, + "emptyRuns": 38, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T20:17:25.806Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 64, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T20:17:25.806Z" + }, + "the-sun-all": { + "provider": "The Sun", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-sun-all-english": { + "provider": "The Sun", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-sun-homepage": { + "provider": "The Sun", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-sun-news-english": { + "provider": "The Sun", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "west-yorkshire-police-coroner-appeals-rss": { + "provider": "West Yorkshire Police - Coroner Appeals Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 58, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-21T11:46:02.615Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "wiltshire-999s": { + "provider": "Wiltshire 999s", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "belfast-live": { + "provider": "Belfast Live", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 6, + "emptyRuns": 22, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 20, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T05:46:58.069Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 40, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "birmingham-mail": { + "provider": "Birmingham Mail", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "breaking-news-today": { + "provider": "Breaking News Today", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cambridge-news": { + "provider": "Cambridge News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T22:53:56.180Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 25, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-23T22:53:56.180Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "cooldownUntil": "2026-04-24T10:53:56.180Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-20T17:16:47.386Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T10:53:56.180Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "channel-4-news": { + "provider": "Channel 4 News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 12, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-19T17:13:24.435Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-20T11:00:44.891Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T23:15:54.554Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T00:08:15.005Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T03:57:52.244Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T08:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 10, + "quarantined": true, + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T08:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "consett-magazine": { + "provider": "Consett Magazine", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "daily-echo": { + "provider": "Daily Echo", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "daily-express": { + "provider": "Daily Express", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "daily-mail-online": { + "provider": "Daily Mail Online - Popular Stories", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 20, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 17, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T23:55:39.351Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T23:55:39.351Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "daily-mirror": { + "provider": "Daily Mirror", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "daily-politics": { + "provider": "Daily Politics", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T22:53:56.180Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 10, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastEmptyAt": "2026-04-23T22:53:56.180Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T07:21:41.099Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T08:39:19.161Z" + } + ], + "cooldownUntil": "2026-04-24T10:53:56.180Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T10:53:56.180Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "deadline-news": { + "provider": "Deadline News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T03:29:13.488Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 25, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-24T03:29:13.488Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 500", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "cooldownUntil": "2026-04-24T15:29:13.488Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-20T17:16:47.386Z", + "quarantineReason": "Health score degraded to 20 after repeated failures", + "nextFetchAt": "2026-04-24T15:29:13.488Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "evening-standard": { + "provider": "Evening Standard", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 3, + "emptyRuns": 25, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 20, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T05:46:58.069Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 35, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "glasgow-times": { + "provider": "Glasgow Times", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "grimsby-telegraph": { + "provider": "Grimsby Telegraph", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "herald-scotland-news": { + "provider": "Herald Scotland - News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "huffpost-uk": { + "provider": "HuffPost UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "larne-times": { + "provider": "Larne Times", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "manchester-evening-news": { + "provider": "Manchester Evening News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "metro": { + "provider": "BBC News - UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "news-uk": { + "provider": "News UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "pinknews": { + "provider": "PinkNews", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 10, + "failedRuns": 5, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T13:19:06.686Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T13:19:06.686Z" + } + ], + "cooldownUntil": "2026-04-24T20:17:25.806Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T20:17:25.806Z" + }, + "politics-co-uk": { + "provider": "Politics.co.uk", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "positive-news": { + "provider": "Positive News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "scottish-field": { + "provider": "Scottish Field", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "surgezirc-uk": { + "provider": "SurgeZirc UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T11:47:27.254Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 15, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T11:47:27.254Z", + "lastEmptyAt": "2026-04-23T08:09:12.931Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T14:11:10.963Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T11:47:27.254Z" + } + ], + "cooldownUntil": "2026-04-25T11:47:27.254Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T08:04:04.612Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T11:47:27.254Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-argus-news": { + "provider": "The Argus", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-bolton-news": { + "provider": "The Bolton News - News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "church-of-england-newspaper": { + "provider": "Church of England Newspaper", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 26, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 16, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-17T22:12:37.099Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-daily-mash": { + "provider": "The Daily Mash", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T22:53:56.180Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 10, + "failedRuns": 5, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T13:19:06.686Z", + "lastEmptyAt": "2026-04-23T22:53:56.180Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T13:19:06.686Z" + } + ], + "cooldownUntil": "2026-04-24T10:53:56.180Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T10:53:56.180Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "daily-record": { + "provider": "Daily Record", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "guardian-uk-top-stories": { + "provider": "The Guardian - UK Top Stories", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 12, + "failedRuns": 3, + "consecutiveFailures": 3, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-18T11:15:29.208Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T23:43:16.267Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-20T06:30:13.977Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "independent-top-stories": { + "provider": "The Independent - Top Stories", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T20:18:46.625Z", + "lastBuiltCount": 0, + "successfulRuns": 4, + "emptyRuns": 39, + "failedRuns": 2, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-19T16:03:49.134Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-23T20:18:46.625Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "cooldownUntil": "2026-04-24T08:18:46.625Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T08:18:46.625Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "northern-echo-news": { + "provider": "The Northern Echo - News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-poke": { + "provider": "The Poke", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "scarborough-news": { + "provider": "The Scarborough News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-scotsman-news": { + "provider": "The Scotsman - News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-scottish-sun": { + "provider": "The Scottish Sun", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-sun": { + "provider": "The Sun", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-week-uk": { + "provider": "The Week UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 11, + "emptyRuns": 14, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T11:07:28.674Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T08:39:19.161Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T08:32:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 13, + "quarantined": true, + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T08:32:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-york-press-news": { + "provider": "The York Press - News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "wales-online": { + "provider": "WalesOnline", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "a-lady-in-london": { + "provider": "A Lady in London", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T03:29:13.488Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 23, + "failedRuns": 3, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T03:29:13.488Z", + "lastEmptyAt": "2026-04-23T22:53:56.180Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-24T03:29:13.488Z" + } + ], + "cooldownUntil": "2026-04-26T03:29:13.488Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T03:29:13.488Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "a-luxury-travel-blog": { + "provider": "A Luxury Travel Blog", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "age-uk-discover": { + "provider": "Age UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "alan-malcher": { + "provider": "Alan Malcher", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "arcticdry": { + "provider": "ArcticDry", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 26, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 18, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-17T08:04:04.612Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T08:04:04.612Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "britishbeautyblogger": { + "provider": "British Beauty Blogger", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "buy-firewood-direct": { + "provider": "Buy Firewood Direct", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "carly-rowena": { + "provider": "Carly Rowena", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cherished-holiday-homes": { + "provider": "Cherished Holiday Homes", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chique-home-living": { + "provider": "Chique Home Living", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "clubwise-blog": { + "provider": "ClubWise Blog", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "disneyrollergirl": { + "provider": "Disneyrollergirl", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "elluminet-press": { + "provider": "9to5Mac", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Health score degraded to 20 after repeated failures", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "england-naturally": { + "provider": "England, Naturally", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 18, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-24T20:52:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 11, + "quarantined": true, + "quarantinedAt": "2026-04-23T03:28:47.210Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T20:52:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "evening-shire": { + "provider": "Evening Shire", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T20:18:46.625Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 23, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastEmptyAt": "2026-04-23T20:18:46.625Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T07:21:41.099Z" + } + ], + "cooldownUntil": "2026-04-24T08:18:46.625Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T08:18:46.625Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "everything-zany": { + "provider": "Everything Zany", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 3, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T14:03:06.243Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "faded-spring": { + "provider": "Emily Underworld", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "fmcg-gurus": { + "provider": "FMCG Gurus", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 24, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 9, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-20T17:16:47.386Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-24T12:16:25.806Z" + }, + "foreign-office-blogs": { + "provider": "Foreign Office Blogs", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "fresh-design-blog": { + "provider": "Fresh Design Blog", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ian-neate-blog": { + "provider": "9to5Mac", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "jollydeck": { + "provider": "JollyDeck", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "lifestylelinked": { + "provider": "LifeStyleLinked", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-review-of-books": { + "provider": "London Review of Books", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "love-my-dress": { + "provider": "Love My Dress", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 18, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 520", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 11, + "quarantined": true, + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "quarantineReason": "Health score degraded to 14 after repeated failures", + "nextFetchAt": "2026-04-24T10:21:25.806Z" + }, + "manic-mum-life": { + "provider": "Manic Mum Life", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 3, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T14:03:06.243Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "marie-claire-uk": { + "provider": "Marie Claire UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "office-breaks": { + "provider": "Office Breaks", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "on-the-think-of": { + "provider": "On The Think Of", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "quadrant2design-exhibiting-guides": { + "provider": "Quadrant2Design Exhibiting Guides", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T23:57:53.617Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastEmptyAt": "2026-04-23T23:57:53.617Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T07:21:41.099Z" + } + ], + "cooldownUntil": "2026-04-24T11:57:53.617Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T11:57:53.617Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "really-ree": { + "provider": "Really Ree", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 23, + "failedRuns": 3, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T14:03:06.243Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rocknroll-bride": { + "provider": "Rock n Roll Bride", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "semibold": { + "provider": "Semibold", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 25, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 13, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T07:21:41.099Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "silly-old-sod": { + "provider": "Silly Old Sod", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 25, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T04:05:33.139Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-20T04:05:33.139Z" + } + ], + "cooldownUntil": "2026-04-24T20:17:25.806Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-20T04:05:33.139Z", + "quarantineReason": "Persistent timeouts — endpoint may be overloaded or unreachable", + "nextFetchAt": "2026-04-24T20:17:25.806Z" + }, + "silverspoon-london": { + "provider": "SilverSpoon London", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "sks-business-services": { + "provider": "SKS Business Services", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "hnd-assignment-help-uk-medium": { + "provider": "Stories by HND Assignment Help UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "streetspace": { + "provider": "Streetspace", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tenura": { + "provider": "Tenura", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "thank-you-for-the-days": { + "provider": "Thank you for the days", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 14, + "failedRuns": 4, + "consecutiveFailures": 2, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-19T14:11:10.963Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-curry-guy": { + "provider": "The Curry Guy", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "real-talk-uk": { + "provider": "The Real Talk UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-stratfordian": { + "provider": "The Stratfordian", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "training-express": { + "provider": "Training Express", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-constitutional-law-association": { + "provider": "UK Constitutional Law Association", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-fundraising-blog": { + "provider": "UK Fundraising", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-human-rights-blog": { + "provider": "UK Human Rights Blog", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "vershd": { + "provider": "Vershd", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "vuelio-uk": { + "provider": "Vuelio", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "avon-and-somerset-police-news-html": { + "provider": "Avon and Somerset Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "avon-somerset-police-news": { + "provider": "Avon & Somerset Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "bedfordshire-police-news": { + "provider": "Bedfordshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bedfordshire-police-news-search": { + "provider": "Bedfordshire Police - News Search", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "british-transport-police-news": { + "provider": "British Transport Police Authority - News Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "btp-british-transport-police-news-html": { + "provider": "British Transport Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cambridgeshire-police-news-search": { + "provider": "Cambridgeshire Police - News Search", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cheshire-police-news": { + "provider": "Cheshire Constabulary - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cleveland-police-news": { + "provider": "Cleveland Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cps-news-centre": { + "provider": "Crown Prosecution Service a News Centre", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ct-policing-north-west": { + "provider": "Counter Terrorism Policing North West", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ct-policing-uk-latest-news": { + "provider": "Counter Terrorism Policing UK a Latest News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ct-policing-uk-rss-feed": { + "provider": "Counter Terrorism Policing UK - Latest News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cumbria-police-news": { + "provider": "Cumbria Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cumbria-police-newsroom": { + "provider": "Cumbria Police - Newsroom", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "derbyshire-police-news": { + "provider": "Derbyshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "devon-and-cornwall-police-newsroom": { + "provider": "Devon and Cornwall Police - Newsroom", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "devon-cornwall-police-news": { + "provider": "Devon and Cornwall Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "dorset-police-news": { + "provider": "Dorset Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "dorset-police-newsroom": { + "provider": "Dorset Police - Newsroom", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "durham-constabulary-news": { + "provider": "Durham Constabulary a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "durham-police-durham-news": { + "provider": "Durham Police - Durham News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "dyfed-powys-police-news": { + "provider": "Dyfed-Powys Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "essex-police-news-html": { + "provider": "Essex Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gloucestershire-police-news": { + "provider": "Gloucestershire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gmp-news": { + "provider": "Greater Manchester Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "greater-manchester-police-news": { + "provider": "Greater Manchester Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gwent-police-news": { + "provider": "Gwent Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "hampshire-police-news": { + "provider": "Hampshire & Isle of Wight Constabulary a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "hertfordshire-police-news": { + "provider": "Hertfordshire Constabulary a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "humberside-police-news-search": { + "provider": "Humberside Police - News Search", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "kent-police-news-html": { + "provider": "Kent Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "lancashire-constabulary-news": { + "provider": "Lancashire Constabulary a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "leicestershire-police-news": { + "provider": "National Crime Agency - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "lincolnshire-police-news": { + "provider": "Lincolnshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "merseyside-police-news": { + "provider": "Merseyside Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "merseyside-police-news-html": { + "provider": "Merseyside Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "norfolk-constabulary-news": { + "provider": "Norfolk Constabulary - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "north-wales-police-news": { + "provider": "North Wales Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "north-yorkshire-police-news-html": { + "provider": "North Yorkshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "northamptonshire-police-news-html": { + "provider": "Northamptonshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "northumbria-police-news": { + "provider": "North East Bylines", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "northumbria-police-northumbria-news": { + "provider": "Northumbria Police - Northumbria News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nottinghamshire-police-news": { + "provider": "Nottinghamshire Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nottinghamshire-police-nottinghamshire-news": { + "provider": "Nottinghamshire Police - Nottinghamshire News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "police-scotland-news": { + "provider": "Police Scotland news", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 30, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T19:32:35.264Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Health score degraded to 23 after repeated failures", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "psni-latest-news": { + "provider": "Police Service of Northern Ireland - Latest News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "psni-news": { + "provider": "Police Service of Northern Ireland a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "south-wales-police-news": { + "provider": "South Wales Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "south-yorkshire-police-news": { + "provider": "South Yorkshire Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "staffordshire-police-news": { + "provider": "Staffordshire Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "staffordshire-police-staffordshire-news": { + "provider": "Staffordshire Police - Staffordshire News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "suffolk-constabulary-news": { + "provider": "Suffolk Constabulary - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "surrey-police-news": { + "provider": "Surrey Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "sussex-police-news": { + "provider": "Sussex Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "thames-valley-police-news": { + "provider": "Thames Valley Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "thames-valley-police-news-html": { + "provider": "Thames Valley Police - Thames Valley News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "warwickshire-police-news": { + "provider": "Warwickshire Connected - Latest Alerts", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "west-mercia-police-news-html": { + "provider": "West Mercia Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "west-midlands-police-news": { + "provider": "West Midlands Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "west-yorkshire-police-all-rss": { + "provider": "West Yorkshire Police - All Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "west-yorkshire-police-appeals-rss": { + "provider": "West Yorkshire Police - Appeals Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "west-yorkshire-police-missing-rss": { + "provider": "West Yorkshire Police - Missing Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "west-yorkshire-police-news": { + "provider": "West Yorkshire Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-21T11:46:02.615Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "west-yorkshire-police-news-appeals": { + "provider": "West Yorkshire Police - News Appeals", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "west-yorkshire-police-news-rss": { + "provider": "West Yorkshire Police - News Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "west-yorkshire-police-releases-rss": { + "provider": "West Yorkshire Police - Releases Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "wiltshire-police-news": { + "provider": "Wiltshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "attorney-generals-office-html": { + "provider": "Attorney General's Office", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "cabinet-office-html": { + "provider": "Cabinet Office", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "cps-homepage": { + "provider": "Crown Prosecution Service", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "crown-office-news": { + "provider": "Crown Office and Procurator Fiscal Service - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "echr-uk-grand-chamber-rss": { + "provider": "European Court of Human Rights - UK Grand Chamber RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "extremism-commission-blog": { + "provider": "Commission for Countering Extremism - Blog", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "fcdo-html": { + "provider": "Foreign, Commonwealth & Development Office", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 13, + "emptyRuns": 76, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-scot-access-to-justice-latest": { + "provider": "Scottish Government - Access to Justice Latest", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-cabinet-office-atom": { + "provider": "Cabinet Office a GOV.UK Atom Feed", + "lane": "oversight", + "kind": "atom", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-hmcts": { + "provider": "HMCTS a Courts and Tribunals Announcements", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-hmic": { + "provider": "HM Inspectorate of Constabulary a GOV.UK", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gov-uk-home-office-atom": { + "provider": "UK Home Office a Atom Feed", + "lane": "oversight", + "kind": "atom", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-ipco": { + "provider": "Investigatory Powers Commissioner's Office a GOV.UK", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-mod-atom": { + "provider": "Ministry of Defence a GOV.UK Atom Feed", + "lane": "oversight", + "kind": "atom", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-moj-atom": { + "provider": "Ministry of Justice a GOV.UK Atom Feed", + "lane": "oversight", + "kind": "atom", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-news-and-communications-atom": { + "provider": "GOV.UK - News and Communications Atom", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 17, + "emptyRuns": 74, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 30, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-20T21:17:14.299Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-parliament-jcnss": { + "provider": "UK Parliament a Joint Committee on National Security Strategy", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "hmiprisons-news": { + "provider": "HM Inspectorate of Prisons - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "hmiprobation-news": { + "provider": "HM Inspectorate of Probation - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "home-office-media-blog": { + "provider": "Home Office Media Blog", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "independent-reviewer-terrorism-legislation": { + "provider": "Independent Reviewer of Terrorism Legislation a Reports", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "independent-reviewer-terrorism-legislation-html": { + "provider": "Independent Reviewer of Terrorism Legislation", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "joint-committee-human-rights-html": { + "provider": "Joint Committee on Human Rights", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T19:31:23.009Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 15, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T19:31:23.009Z", + "lastEmptyAt": "2026-04-23T18:02:43.923Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T19:31:23.009Z" + } + ], + "cooldownUntil": "2026-04-25T19:31:23.009Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-25T19:31:23.009Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "judiciary-rss-feeds-page": { + "provider": "Judiciary UK - RSS Feeds", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "judiciary-uk-announcements-feed": { + "provider": "Judiciary UK - Announcements Feed", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "judiciary-uk-judgments-feed": { + "provider": "Judiciary UK - Judgments Feed", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "judiciary-uk-news": { + "provider": "Judiciary of England and Wales a News", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-22T16:17:11.443Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 34, + "failedRuns": 3, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T16:17:11.443Z", + "lastEmptyAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T11:44:44.316Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T16:17:11.443Z" + } + ], + "cooldownUntil": "2026-04-24T16:17:11.443Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T16:17:11.443Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "judiciary-uk-publications-feed": { + "provider": "Judiciary UK - Publications Feed", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "lords-in-focus-rss": { + "provider": "Hansard Society - Despatch Box", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "lords-library-notes-rss": { + "provider": "Hansard Society - Despatch Box", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ministry-of-defence-html": { + "provider": "Ministry of Defence", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 75, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "ons-html": { + "provider": "Office for National Statistics", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "parliament-all-bills-rss": { + "provider": "Parliament - All Bills RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "parliament-private-bills-rss": { + "provider": "Parliament - Private Bills RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "parliament-public-bills-rss": { + "provider": "Parliament - Public Bills RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "police-ombudsman-current-investigations": { + "provider": "Police Ombudsman - Current Investigations", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "police-uk-crime-categories-2024-01": { + "provider": "Police.uk - Crime Categories (2024-01)", + "lane": "oversight", + "kind": "json", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "police-uk-crimes-street-dates": { + "provider": "Police.uk - Street Crime Dataset Dates", + "lane": "oversight", + "kind": "json", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "police-uk-outcomes-at-location-1609590": { + "provider": "Police Data UK - Outcomes At Location API Docs", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "police-uk-outcomes-for-crime-e11dade0": { + "provider": "Police.uk - Outcomes For Crime e11dade0", + "lane": "oversight", + "kind": "json", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-fai-determinations-rss": { + "provider": "Scottish Courts - Fatal Accident Inquiry Determinations RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-fai-hearings-rss": { + "provider": "Scottish Courts - Fatal Accident Inquiry Hearings RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-high-court-justiciary-judgments-rss": { + "provider": "Scottish Courts - High Court of Justiciary Judgments RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-high-court-practice-notes-rss": { + "provider": "Scottish Courts - High Court of Justiciary Practice Notes RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-judgments-rss": { + "provider": "Scottish Courts - Judgments RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-news-articles-rss": { + "provider": "Scottish Courts - News Articles RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-publications-rss": { + "provider": "Scottish Courts - Publications RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-rss-feeds-page": { + "provider": "Scottish Courts and Tribunals - RSS Feeds", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 65, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T23:56:26.571Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-25T03:28:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T03:28:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "scotcourts-sheriff-criminal-practice-notes-rss": { + "provider": "Scottish Courts - Sheriff Court Criminal Practice Notes RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scottish-government-justice-news": { + "provider": "Scottish Government - Justice and Safety", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "serious-fraud-office-news": { + "provider": "Serious Fraud Office a News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 63, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T04:05:33.139Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T04:05:33.139Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-home-office": { + "provider": "UK Home Office a Announcements and Publications", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 1, + "successfulRuns": 101, + "emptyRuns": 4, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-19T18:05:04.781Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-iopc-news": { + "provider": "Independent Office for Police Conduct a News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-ncsc-news": { + "provider": "National Cyber Security Centre (UK) a News", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 5, + "successfulRuns": 105, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-ncsc-threat-reports": { + "provider": "National Cyber Security Centre (UK) a Threat Reports", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-16T16:57:11.406Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T21:08:30.446Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-parliament-business-news": { + "provider": "UK Parliament - Business News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-parliament-defence-committee": { + "provider": "UK Parliament a Defence Select Committee", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 68, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": "2026-04-23T08:09:12.931Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-parliament-foreign-affairs-committee": { + "provider": "UK Parliament a Foreign Affairs Select Committee", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-parliament-home-affairs-committee": { + "provider": "UK Parliament a Home Affairs Committee (News)", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 79, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-24T08:17:25.806Z" + } + ], + "cooldownUntil": "2026-04-26T08:17:25.806Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T08:17:25.806Z" + }, + "uk-parliament-isc": { + "provider": "UK Parliament a Intelligence and Security Committee (Reports & News)", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 2, + "failedRuns": 6, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 4, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-parliament-justice-committee": { + "provider": "UK Parliament a Justice Select Committee", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "act-campaign": { + "provider": "ACT Awareness Campaign", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "cheshire-police-alert": { + "provider": "Cheshire Police Alert", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "ct-policing-prevent-programme": { + "provider": "Counter Terrorism Policing - Prevent", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ct-policing-what-you-can-do": { + "provider": "Counter Terrorism Policing - What You Can Do", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "dc-police-community-messaging": { + "provider": "Dorset and Cornwall Police - Community Messaging", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "devon-cornwall-alerts": { + "provider": "Devon and Cornwall Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gnet-research": { + "provider": "Global Network on Extremism & Technology (GNET) a Main Feed", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 95, + "emptyRuns": 6, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T06:01:25.327Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 97, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T12:00:25.806Z" + }, + "gov-uk-contest-strategy": { + "provider": "GOV.UK a CONTEST Counter-Terrorism Strategy", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-counter-extremism-commissioner": { + "provider": "Counter Extremism Commissioner a GOV.UK", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 79, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 77, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T19:01:30.233Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T19:01:30.233Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-prevent-strategy": { + "provider": "UK Home Office - Prevent duty guidance", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-report-terrorism": { + "provider": "GOV.UK - Report Terrorism", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gov-uk-terrorism-national-emergency": { + "provider": "GOV.UK - Terrorism National Emergency", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "icsr-kcl": { + "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "met-office-seasonal-advice": { + "provider": "Met Office - Seasonal Advice", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "mi5-terrorism-threat-levels": { + "provider": "MI5 - Terrorism Threat Levels", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "mi5-uk-threat-level": { + "provider": "MI5 (Security Service) a UK Threat Level", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "my-community-alert": { + "provider": "My Community Alert", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-23T11:47:27.254Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 45, + "failedRuns": 2, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T11:47:27.254Z", + "lastEmptyAt": "2026-04-23T10:13:21.253Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-18T19:28:57.337Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T11:47:27.254Z" + } + ], + "cooldownUntil": "2026-04-25T11:47:27.254Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T11:47:27.254Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "north-wales-community-alert": { + "provider": "North Wales Community Alert", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T03:29:13.488Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 41, + "failedRuns": 4, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T03:29:13.488Z", + "lastEmptyAt": "2026-04-23T23:57:53.617Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 429", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-17T05:46:58.069Z" + }, + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-20T23:15:54.554Z" + }, + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-24T03:29:13.488Z" + } + ], + "cooldownUntil": "2026-04-26T03:29:13.488Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T03:29:13.488Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "northamptonshire-talking": { + "provider": "Northamptonshire Talking", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "npsa-blog": { + "provider": "NPSA - Blog", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "npsa-blog-news": { + "provider": "NPSA - Blog News", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "npsa-national-protective-security-authority": { + "provider": "NPSA - Activity on GOV.UK", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "protectuk": { + "provider": "ProtectUK (NPSA) a Protective Security Guidance", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "south-yorkshire-police-alerts": { + "provider": "South Yorkshire Police Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "stay-in-the-know-home": { + "provider": "Stay In The Know - Community Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "stay-in-the-know-latest-alerts": { + "provider": "Stay In The Know - Latest Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 58, + "failedRuns": 2, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-ncsc-all-rss": { + "provider": "UK NCSC - All Updates RSS", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 75, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-ncsc-homepage": { + "provider": "UK NCSC - Homepage", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-prevent-duty-guidance": { + "provider": "GOV.UK a Prevent Duty Guidance (Collection)", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "west-midlands-community-alerts": { + "provider": "WMNow - Community Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "west-yorkshire-community-alert": { + "provider": "West Yorkshire Community Alert", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-proscribed-terrorist-orgs": { + "provider": "GOV.UK a Proscribed Terrorist Organisations", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "hm-treasury-html": { + "provider": "HM Treasury", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "ofsi-blog-home": { + "provider": "OFSI - Blog", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "otsi-blog-home": { + "provider": "OTSI - Blog", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 1, + "successfulRuns": 101, + "emptyRuns": 4, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-19T18:05:04.781Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-ofsi-blog": { + "provider": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "lane": "sanctions", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 2, + "successfulRuns": 105, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-sanctions-list": { + "provider": "UK Sanctions List (FCDO) a Consolidated List (XML Service)", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ctc-sentinel": { + "provider": "Combating Terrorism Center at West Point - CTC Sentinel", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "dhs-press-releases": { + "provider": "US Department of Homeland Security - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "dni-press-releases": { + "provider": "Office of the Director of National Intelligence - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "doj-nsd-press-releases": { + "provider": "U.S. Department of Justice - National Security Division Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "fbi-national-press-releases": { + "provider": "FBI - National Press Releases (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "fbi-stories": { + "provider": "FBI - Top Stories (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "fbi-top-stories": { + "provider": "FBI - Top Stories (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gw-program-extremism": { + "provider": "George Washington University - Program on Extremism", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nsa-cybersecurity-news": { + "provider": "NSA - Cybersecurity Advisories & Guidance", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "rand-terrorism-topic": { + "provider": "RAND - Terrorism Topic Updates", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rewards-for-justice": { + "provider": "U.S. Department of State - Rewards for Justice", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "start-baad-database": { + "provider": "National Consortium for the Study of Terrorism (START) - Big Allied and Dangerous (BAAD) Database", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "start-center-publications": { + "provider": "START Center (UMD) - News & Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "state-dept-terrorism": { + "provider": "US State Department - Bureau of Counterterrorism", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "cisa-cybersecurity-advisories": { + "provider": "CISA - Cybersecurity Alerts & Advisories", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 13, + "emptyRuns": 76, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "us-house-homeland-security": { + "provider": "US House Committee on Homeland Security - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "us-treasury-ofac-press-releases": { + "provider": "U.S. Treasury (OFAC) - Press Releases", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 79, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 79, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T15:11:26.228Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T15:11:26.228Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "us-treasury-ofac-recent-actions": { + "provider": "U.S. Treasury (OFAC) - Recent Actions", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" } } } diff --git a/shared/alert-view-model.mjs b/shared/alert-view-model.mjs index c52902d9..7c561c1a 100644 --- a/shared/alert-view-model.mjs +++ b/shared/alert-view-model.mjs @@ -355,14 +355,14 @@ export function sortAlertsByFreshness(alertList) { return [...alertList].sort((a, b) => { const freshnessGap = freshnessBucketForAlert(b) - freshnessBucketForAlert(a); if (freshnessGap !== 0) return freshnessGap; + const timeGap = alertPublishedTime(b) - alertPublishedTime(a); + if (timeGap !== 0) return timeGap; const trackGap = incidentTrackRank(b) - incidentTrackRank(a); if (trackGap !== 0) return trackGap; const tierGap = sourceTierRank(b) - sourceTierRank(a); if (tierGap !== 0) return tierGap; const londonGap = Number(isLondonAlert(b)) - Number(isLondonAlert(a)); if (londonGap !== 0) return londonGap; - const timeGap = alertPublishedTime(b) - alertPublishedTime(a); - if (timeGap !== 0) return timeGap; const scoreGap = incidentScore(b) - incidentScore(a); if (scoreGap !== 0) return scoreGap; if (!!a.major !== !!b.major) return a.major ? -1 : 1; diff --git a/source-quarantine.html b/source-quarantine.html index 8ba8a1ae..df1bcf8c 100644 --- a/source-quarantine.html +++ b/source-quarantine.html @@ -269,13 +269,13 @@

Source Quarantine Review

- Generated: 2026-04-24T11:19:00.278Z - Low-health sources: 0 + Generated: 2026-04-24T08:17:25.806Z + Low-health sources: 529 Pending suggestions: 0 SLA: deprioritised, auto-recheck 24h+ - New this week: 0 - Avg health score: 0/100 - Avg time in quarantine: 0h + New this week: 231 + Avg health score: 3/100 + Avg time in quarantine: 153h Re-quarantine rate: 0%
@@ -455,7 +455,7 @@

Feed Audit

? 'Data mode: live API (restore enabled)' : 'Data mode: live read-only (restore unavailable)'; meta.innerHTML = [ - 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T11:19:00.278Z') + '', + 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T08:17:25.806Z') + '', 'Low-health sources: ' + escapeHtml(currentEntries.length) + '', 'Pending suggestions: ' + escapeHtml(currentSuggestions.length) + '', 'SLA: deprioritised, auto-recheck 24h+', diff --git a/tests/decision-logic.test.mjs b/tests/decision-logic.test.mjs index 4a13790d..0b8b2c6f 100644 --- a/tests/decision-logic.test.mjs +++ b/tests/decision-logic.test.mjs @@ -29,6 +29,7 @@ import { isLiveIncidentCandidate, isQuarantineCandidate, normaliseAlert, + sortAlertsByFreshness, trustSignal } from '../shared/alert-view-model.mjs'; import { @@ -1606,6 +1607,24 @@ test('renderSupporting merges context and quarantine into one progressive list', assert.equal(supportingLoadMore.hasClass('hidden'), false); }); +test('sortAlertsByFreshness prioritises newer stories inside the same freshness bucket', () => { + const newerButLowerSignal = makeAlert({ + id: 'newer', + incidentTrack: 'case', + sourceTier: 'research', + publishedAt: isoMinutesAgo(13 * 60) + }); + const olderButHigherSignal = makeAlert({ + id: 'older', + incidentTrack: 'live', + sourceTier: 'trigger', + publishedAt: isoMinutesAgo(20 * 60) + }); + + const sorted = sortAlertsByFreshness([olderButHigherSignal, newerButLowerSignal]); + assert.deepEqual(sorted.map((alert) => alert.id), ['newer', 'older']); +}); + test('addSourceRequest accepts valid http/https links and stores newest first', () => { const requests = []; const result = addSourceRequest(requests, 'https://example.com/news', new Date('2026-04-04T12:00:00.000Z')); From fd2d96f5f9c72162b5ed52e07744390e5c7becc4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:22:27 +0000 Subject: [PATCH 03/25] Plan: tighten UNOCT filtering and add per-source daily cap Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/e35a7380-f184-4b48-b5a2-eeba227f5f66 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2252800 -> 2252800 bytes data/quarantined-sources.json | 18772 +-------------------- data/source-remediation-sweep.json | 123 +- data/top-20-source-remediation.json | 58 +- live-alerts.json | 22782 +------------------------- source-quarantine.html | 12 +- 6 files changed, 249 insertions(+), 41498 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index b13185dfa065db2f8edab7231a8e72c2aa5bdc03..528082203a68f67b49eb71767ad74d0c55f95e97 100644 GIT binary patch delta 1915 zcmb7_-*4Jh6vwd*Hf|t43e7LF#;KG}&^o%9AE_az+R&m_s+w#?n$}6n9JmlSiJjRd zNjGhdHAJ+h{dz##->`?Sd!T)5t2|VFsMN>qsqcHL)VFEXj-fULLDpUIdEs8}`F_v2 z=Wy`gJK_NNAwq2ZIFl!~e*e6_GObP!RGie+s#e5nT2)!wkaa`VZs(c1tKJvH_YEH+ zR{ZpJI!@oBziku{@uYb^PQ36E3qOw?#LO8gOP1w*qpD&4maZ!Nj)r%!V#umOUW`zp zyD1s!Hm~ktO_wVh26fnY?PAu0=zO;%vwdI$2O@3-!A)?WDQ6aYSBqlGW1aZo}Dr zN=_0Ypz;2enxlVHFNwzF5fL`SwF@CpoE?zJ<0W?_t~hU?CDDBm_Tm4l(H!&xD^QDt z5~;`useAL@998-D^J{5(v-RIei@sI8?JOTIy`}&!-~(uY0sH_9oC1b`01yO*fe~O7 z7z0iNAs`H#0mgv|U=o-Drhy1B1H98*dVTisvvHQ$^o)dumxGrBSBB=)c1U0=MX$hLY{Die%3aY0D{4Py0EN zQL=!>!5^U`dme3cUFD+d~jnHFXC& z20K^UItdmjVA=LS6!Yo;J zX4I2w%{msAJ@1^Gdq>rPDm(Ie^53bJJ^nti>NLc$JFXoBB0-$SH}hfI>=}tpoUWno z#OU9Il2!M?<*hmMwkEpDh~V$W32;2eP>FUS?9*#j-3w7*-Zs9N4~LddQ0xx0aX0rJRJ0{{R3 delta 330 zcmWO0ze@sP9LI6LKKFQ@=Z`zHG_|^<9B$Gfp)eYRXi}jyvWUWv6wVBy<%US2rEs_@ z=hh5*YKw4)hM>_PusLXemW-`E)!I{N*1VgyLDEIA4G{|-OWbJ+S#pG zt$L-p-#lzs#|73aOGCPFc!o;OMuuL!e2%;5o~}hYOGC-oHuzG7wAAMhAx|)`YInMQBZ>YGt8@D5==P`3e%UvN0$P}f;(Ds*{|7^Hc%1+M diff --git a/data/quarantined-sources.json b/data/quarantined-sources.json index a6abc8f9..b9e60a32 100644 --- a/data/quarantined-sources.json +++ b/data/quarantined-sources.json @@ -1,18772 +1,14 @@ { - "generatedAt": "2026-04-24T08:17:25.806Z", - "count": 529, + "generatedAt": "2026-04-24T15:22:20.804Z", + "count": 0, "metrics": { - "total": 529, - "newThisWeek": 231, - "avgTimeInQuarantineHours": 153, - "avgHealthScore": 3, + "total": 0, + "newThisWeek": 0, + "avgTimeInQuarantineHours": 0, + "avgHealthScore": 0, "reQuarantineRate": 0, "reQuarantined": 0, "restoredTotal": 0 }, - "sources": [ - { - "id": "euaa-news", - "provider": "EUAA (EU Agency for Asylum) - Press Releases", - "endpoint": "https://euaa.europa.eu/news-events/press-releases", - "kind": "html", - "lane": "border", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eulisa-news-events", - "provider": "eu-LISA - News and Events (RSS)", - "endpoint": "https://www.eulisa.europa.eu/news-and-events.rss", - "kind": "rss", - "lane": "border", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T08:17:25.806Z", - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T08:17:25.806Z", - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "europol-news-rss", - "provider": "Europol - Newsroom (RSS)", - "endpoint": "https://www.europol.europa.eu/cms/api/rss/news", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dutch-police-rss-index", - "provider": "Politie.nl - RSS", - "endpoint": "https://www.politie.nl/rss", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "mossos-news", - "provider": "Mossos d'Esquadra - News", - "endpoint": "https://mossos.gencat.cat/ca/actualitat/", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eppo-news-node-7", - "provider": "European Public Prosecutor's Office - News (RSS)", - "endpoint": "https://www.eppo.europa.eu/en/news.xml", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-commission-counter-terrorism-measures-2026", - "provider": "European Commission - Counter Terrorism Measures 2026", - "endpoint": "https://commission.europa.eu/news-and-media/news/commission-proposes-new-measures-prevent-and-counter-terrorism-2026-02-26_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-commission-home-affairs-topic", - "provider": "European Commission - Home Affairs", - "endpoint": "https://commission.europa.eu/topics/home-affairs_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-council-jha-register-rss", - "provider": "Council of the EU - Latest Documents RSS", - "endpoint": "https://www.consilium.europa.eu/en/register/rss/LD.xml", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-council-press-releases", - "provider": "Council of the European Union a Press Releases (RSS)", - "endpoint": "https://www.consilium.europa.eu/en/rss/pressreleases.ashx", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-council-press-releases-html", - "provider": "Council of the EU - Press Releases", - "endpoint": "https://www.consilium.europa.eu/en/press/press-releases/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-eppo-news", - "provider": "European Public Prosecutor's Office - News", - "endpoint": "https://www.eppo.europa.eu/en/news", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-home-affairs-news", - "provider": "European Commission a Home Affairs News", - "endpoint": "https://home-affairs.ec.europa.eu/news_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-olaf-news", - "provider": "OLAF (EU Anti-Fraud Office) a News", - "endpoint": "https://anti-fraud.ec.europa.eu/media-corner/news_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-security-union-strategy", - "provider": "European Commission a Security Union Strategy", - "endpoint": "https://home-affairs.ec.europa.eu/policies/internal-security_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "europarl-committee-libe", - "provider": "European Parliament - LIBE Press Releases", - "endpoint": "https://www.europarl.europa.eu/committees/en/libe/home/press-releases", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "europarl-committee-sede", - "provider": "European Parliament - SEDE Press Releases", - "endpoint": "https://www.europarl.europa.eu/committees/en/sede/home/press-releases", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "europarl-pressreleases-committees", - "provider": "European Parliament a Press Releases (Committees) (RSS)", - "endpoint": "https://www.europarl.europa.eu/rss/doc/press-releases-committees/en.xml", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "netherlands-police-news", - "provider": "Dutch National Police - News (EN)", - "endpoint": "https://www.politie.nl/en/news", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "echr-press-releases-rss", - "provider": "European Court of Human Rights - Press Releases RSS", - "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echrengpress&query=contentsitename%3AECHR+AND+doctype%3DPR&ranking. Model. Id=11111111-0000-0000-0000-000000000000&sort=kpdate+Descending&start=0", - "kind": "rss", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "french-justice-ministry-news", - "provider": "French Ministry of Justice - News", - "endpoint": "https://www.justice.gouv.fr/actualites", - "kind": "html", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dsn-at-english", - "provider": "DSN Austria - Aktuelles", - "endpoint": "https://www.dsn.gv.at/news.html", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "sapo-se-english", - "provider": "Swedish Security Service English news", - "endpoint": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/press-room/news.html", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "interpol-news-events", - "provider": "INTERPOL a News and Events", - "endpoint": "https://www.interpol.int/News-and-Events", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "osce-press-releases", - "provider": "OSCE a Press Releases", - "endpoint": "https://www.osce.org/press-releases", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "unoct-news", - "provider": "UN Office of Counter-Terrorism (UNOCT) - News", - "endpoint": "https://www.un.org/counterterrorism/news", - "kind": "html", - "lane": "oversight", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "bexley-council-news", - "provider": "Bexley Council a News", - "endpoint": "https://www.bexley.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "brent-council-news", - "provider": "Brent Council a News", - "endpoint": "https://www.brent.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "camden-council-news", - "provider": "Camden Council a News", - "endpoint": "https://news.camden.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "chelsea-westminster-news", - "provider": "Chelsea and Westminster Hospital NHS Foundation Trust a News", - "endpoint": "https://www.chelwest.nhs.uk/about-us/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "croydon-council-news", - "provider": "Croydon Council a News", - "endpoint": "https://news.croydon.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gosh-news", - "provider": "Great Ormond Street Hospital a News", - "endpoint": "https://www.gosh.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "guys-st-thomas-news", - "provider": "Guy's and St Thomas' NHS Foundation Trust a News", - "endpoint": "https://www.guysandstthomas.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hackney-council-news", - "provider": "Hackney Council a News", - "endpoint": "https://news.hackney.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "havering-council-news", - "provider": "Havering Council a News", - "endpoint": "https://www.havering.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hillingdon-council-news", - "provider": "Hillingdon Council a News", - "endpoint": "https://www.hillingdon.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hounslow-council-news", - "provider": "Hounslow Council a News", - "endpoint": "https://www.hounslow.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "islington-council-news", - "provider": "Islington Council a News", - "endpoint": "https://www.islington.media/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "kings-college-hospital-news", - "provider": "King's College Hospital NHS Foundation Trust a News", - "endpoint": "https://www.kch.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "lambeth-council-news", - "provider": "Lambeth Council a News", - "endpoint": "https://love.lambeth.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "lnwh-news", - "provider": "London North West University Healthcare NHS Trust a News", - "endpoint": "https://www.lnwh.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "london-gov-rss-80603", - "provider": "Greater London Authority a RSS Feed 80603", - "endpoint": "https://www.london.gov.uk/rss-feeds/80603", - "kind": "rss", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "london-gov-rss-80632", - "provider": "Greater London Authority a RSS Feed 80632", - "endpoint": "https://www.london.gov.uk/rss-feeds/80632", - "kind": "rss", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "met-police-the-met-tag", - "provider": "Metropolitan Police - The Met Tag", - "endpoint": "https://news.met.police.uk/news/tag/the-met", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "moorfields-news", - "provider": "Moorfields Eye Hospital NHS Foundation Trust a News", - "endpoint": "https://www.moorfields.nhs.uk/about-us/news-and-blogs/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "nelft-news", - "provider": "North East London NHS Foundation Trust a News", - "endpoint": "https://www.nelft.nhs.uk/news-events/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "newham-council-news", - "provider": "Newham Council a News", - "endpoint": "https://www.newham.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "nhs-london-nwl-news", - "provider": "NHS North West London a News", - "endpoint": "https://www.nwlondonicb.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "oxleas-news", - "provider": "Oxleas NHS Foundation Trust a News", - "endpoint": "https://oxleas.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "redbridge-council-news", - "provider": "Redbridge Council a News", - "endpoint": "https://www.redbridge.gov.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "st-georges-news", - "provider": "St George's University Hospitals NHS Foundation Trust a News", - "endpoint": "https://www.stgeorges.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "sutton-council-news", - "provider": "Sutton Council a News", - "endpoint": "https://www.sutton.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "swlstg-news", - "provider": "South West London and St George's Mental Health NHS Trust a News", - "endpoint": "https://www.swlstg.nhs.uk/latest-news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "waltham-forest-council-news", - "provider": "Waltham Forest Council a News", - "endpoint": "https://www.walthamforest.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-fcdo-travel-advice", - "provider": "FCDO a Foreign Travel Advice Index", - "endpoint": "https://www.gov.uk/foreign-travel-advice", - "kind": "html", - "lane": "border", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-border-force", - "provider": "Border Force (UK) a Announcements and Publications", - "endpoint": "https://www.gov.uk/government/organisations/border-force", - "kind": "html", - "lane": "border", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-ukvi", - "provider": "UK Visas and Immigration a Announcements and Publications", - "endpoint": "https://www.gov.uk/government/organisations/uk-visas-and-immigration", - "kind": "html", - "lane": "border", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-terrorism-search", - "provider": "GOV.UK Search - Terrorism", - "endpoint": "https://www.gov.uk/search/all?keywords=terrorism", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "npcc-releases", - "provider": "National Police Chiefs' Council - Releases", - "endpoint": "https://news.npcc.police.uk/releases/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-stops-force-leicestershire", - "provider": "Police.uk - Force Stops (Leicestershire)", - "endpoint": "https://data.police.uk/api/stops-force?force=leicestershire", - "kind": "json", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-stops-street-leicester", - "provider": "Police.uk - Street Stops Around Leicester", - "endpoint": "https://data.police.uk/api/stops-street?lat=52.629729&lng=-1.131592", - "kind": "json", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "foreign-office-blogs", - "provider": "Foreign Office Blogs", - "endpoint": "https://blogs.fco.gov.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "avon-and-somerset-police-news-html", - "provider": "Avon and Somerset Police - News", - "endpoint": "https://www.avonandsomerset.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "avon-somerset-police-news", - "provider": "Avon & Somerset Police a News", - "endpoint": "https://www.avonandsomerset.police.uk/newsroom/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "psni-latest-news", - "provider": "Police Service of Northern Ireland - Latest News", - "endpoint": "https://www.psni.police.uk/latest-news", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-all-rss", - "provider": "West Yorkshire Police - All Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/all/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-appeals-rss", - "provider": "West Yorkshire Police - Appeals Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/appeals/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-news-appeals", - "provider": "West Yorkshire Police - News Appeals", - "endpoint": "https://www.westyorkshirepolice.co.uk/news-appeals", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-news-rss", - "provider": "West Yorkshire Police - News Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-releases-rss", - "provider": "West Yorkshire Police - Releases Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/releases/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "attorney-generals-office-html", - "provider": "Attorney General's Office", - "endpoint": "https://www.gov.uk/government/organisations/attorney-generals-office", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "cabinet-office-html", - "provider": "Cabinet Office", - "endpoint": "https://www.gov.uk/government/organisations/cabinet-office", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "crown-office-news", - "provider": "Crown Office and Procurator Fiscal Service - News", - "endpoint": "https://www.copfs.gov.uk/about-copfs/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "echr-uk-grand-chamber-rss", - "provider": "European Court of Human Rights - UK Grand Chamber RSS", - "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echreng&query=%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28+contentsitename%3AECHR+AND+%28NOT+%28doctype%3DPR+OR+doctype%3DHFCOMOLD+OR+doctype%3DHECOMOLD%29%29+AND+%28%28respondent%3D%22GBR%22%29%29+AND+%28%28documentcollectionid%3D%22GRANDCHAMBER%22%29%29%29+XRANK%28cb%3D14%29+doctypebranch%3AGRANDCHAMBER%29+XRANK%28cb%3D13%29+doctypebranch%3ADECGRANDCHAMBER%29+XRANK%28cb%3D12%29+doctypebranch%3ACHAMBER%29+XRANK%28cb%3D11%29+doctypebranch%3AADMISSIBILITY%29+XRANK%28cb%3D10%29+doctypebranch%3ACOMMITTEE%29+XRANK%28cb%3D9%29+doctypebranch%3AADMISSIBILITYCOM%29+XRANK%28cb%3D8%29+doctypebranch%3ADECCOMMISSION%29+XRANK%28cb%3D7%29+doctypebranch%3ACOMMUNICATEDCASES%29+XRANK%28cb%3D6%29+doctypebranch%3ACLIN%29+doctypebranch%3AADVISORYOPINIONS%29+doctypebranch%3AREPORTS%29+doctypebranch%3AEXECUTION%29+doctypebranch%3AMERITS%29+doctypebranch%3ASCREENINGPANEL%29+XRANK%28cb%3D4%29+importance%3A1%29+XRANK%28cb%3D3%29+importance%3A2%29+XRANK%28cb%3D2%29+importance%3A3%29+XRANK%28cb%3D1%29+importance%3A4%29+XRANK%28cb%3D2%29+languageisocode%3AENG%29+XRANK%28cb%3D1%29+languageisocode%3AFRE&ranking. Model. Id=4180000c-8692-45ca-ad63-74bc4163871b&sort=kpdate+Descending&start=0", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "extremism-commission-blog", - "provider": "Commission for Countering Extremism - Blog", - "endpoint": "https://extremismcommission.blog.gov.uk/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "fcdo-html", - "provider": "Foreign, Commonwealth & Development Office", - "endpoint": "https://www.gov.uk/government/organisations/foreign-commonwealth-development-office", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-scot-access-to-justice-latest", - "provider": "Scottish Government - Access to Justice Latest", - "endpoint": "https://www.gov.scot/policies/access-to-justice/latest/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-cabinet-office-atom", - "provider": "Cabinet Office a GOV.UK Atom Feed", - "endpoint": "https://www.gov.uk/government/organisations/cabinet-office.atom", - "kind": "atom", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-hmcts", - "provider": "HMCTS a Courts and Tribunals Announcements", - "endpoint": "https://www.gov.uk/government/organisations/hm-courts-and-tribunals-service", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-home-office-atom", - "provider": "UK Home Office a Atom Feed", - "endpoint": "https://www.gov.uk/government/organisations/home-office.atom", - "kind": "atom", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-ipco", - "provider": "Investigatory Powers Commissioner's Office a GOV.UK", - "endpoint": "https://www.ipco.org.uk/publications/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-mod-atom", - "provider": "Ministry of Defence a GOV.UK Atom Feed", - "endpoint": "https://www.gov.uk/government/organisations/ministry-of-defence.atom", - "kind": "atom", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-moj-atom", - "provider": "Ministry of Justice a GOV.UK Atom Feed", - "endpoint": "https://www.gov.uk/government/organisations/ministry-of-justice.atom", - "kind": "atom", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-news-and-communications-atom", - "provider": "GOV.UK - News and Communications Atom", - "endpoint": "https://www.gov.uk/search/news-and-communications.atom", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hmiprisons-news", - "provider": "HM Inspectorate of Prisons - News", - "endpoint": "https://hmiprisons.justiceinspectorates.gov.uk/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hmiprobation-news", - "provider": "HM Inspectorate of Probation - News", - "endpoint": "https://hmiprobation.justiceinspectorates.gov.uk/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "home-office-media-blog", - "provider": "Home Office Media Blog", - "endpoint": "https://homeofficemedia.blog.gov.uk/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "independent-reviewer-terrorism-legislation", - "provider": "Independent Reviewer of Terrorism Legislation a Reports", - "endpoint": "https://terrorismlegislationreviewer.independent.gov.uk/category/reports/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "independent-reviewer-terrorism-legislation-html", - "provider": "Independent Reviewer of Terrorism Legislation", - "endpoint": "https://www.gov.uk/government/organisations/independent-reviewer-of-terrorism-legislation", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "judiciary-rss-feeds-page", - "provider": "Judiciary UK - RSS Feeds", - "endpoint": "https://www.judiciary.uk/rss-feeds/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "judiciary-uk-announcements-feed", - "provider": "Judiciary UK - Announcements Feed", - "endpoint": "https://www.judiciary.uk/announcements/feed/", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "judiciary-uk-judgments-feed", - "provider": "Judiciary UK - Judgments Feed", - "endpoint": "https://www.judiciary.uk/judgments/feed/", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "judiciary-uk-publications-feed", - "provider": "Judiciary UK - Publications Feed", - "endpoint": "https://www.judiciary.uk/publications/feed/", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "ministry-of-defence-html", - "provider": "Ministry of Defence", - "endpoint": "https://www.gov.uk/government/organisations/ministry-of-defence", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "ons-html", - "provider": "Office for National Statistics", - "endpoint": "https://www.gov.uk/government/organisations/office-for-national-statistics", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "parliament-all-bills-rss", - "provider": "Parliament - All Bills RSS", - "endpoint": "https://bills.parliament.uk/rss/allbills.rss", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "parliament-private-bills-rss", - "provider": "Parliament - Private Bills RSS", - "endpoint": "https://bills.parliament.uk/rss/privatebills.rss", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "parliament-public-bills-rss", - "provider": "Parliament - Public Bills RSS", - "endpoint": "https://bills.parliament.uk/rss/publicbills.rss", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-crime-categories-2024-01", - "provider": "Police.uk - Crime Categories (2024-01)", - "endpoint": "https://data.police.uk/api/crime-categories?date=2024-01", - "kind": "json", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-crimes-street-dates", - "provider": "Police.uk - Street Crime Dataset Dates", - "endpoint": "https://data.police.uk/api/crimes-street-dates", - "kind": "json", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-outcomes-for-crime-e11dade0", - "provider": "Police.uk - Outcomes For Crime e11dade0", - "endpoint": "https://data.police.uk/api/outcomes-for-crime/e11dade0a92a912d12329b9b2abb856ac9520434ad6845c30f503e9901d140f1", - "kind": "json", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-fai-determinations-rss", - "provider": "Scottish Courts - Fatal Accident Inquiry Determinations RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Fatal. Accident. Inquiry. Determinations", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-fai-hearings-rss", - "provider": "Scottish Courts - Fatal Accident Inquiry Hearings RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Fatal. Accident. Inquiry. Hearings", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-high-court-justiciary-judgments-rss", - "provider": "Scottish Courts - High Court of Justiciary Judgments RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Judgments/?Court=High+Court+of+Justiciary", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-high-court-practice-notes-rss", - "provider": "Scottish Courts - High Court of Justiciary Practice Notes RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Practice. Notes. And. Directions/?Category=High+Court+of+Justiciary", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-judgments-rss", - "provider": "Scottish Courts - Judgments RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Judgments", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-news-articles-rss", - "provider": "Scottish Courts - News Articles RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/News. Articles", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-publications-rss", - "provider": "Scottish Courts - Publications RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Publications", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-sheriff-criminal-practice-notes-rss", - "provider": "Scottish Courts - Sheriff Court Criminal Practice Notes RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Practice. Notes. And. Directions/?Category=Sheriff+Court+Criminal", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-iopc-news", - "provider": "Independent Office for Police Conduct a News", - "endpoint": "https://www.policeconduct.gov.uk/news", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T08:17:25.806Z", - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "act-campaign", - "provider": "ACT Awareness Campaign", - "endpoint": "https://act.campaign.gov.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-contest-strategy", - "provider": "GOV.UK a CONTEST Counter-Terrorism Strategy", - "endpoint": "https://www.gov.uk/government/collections/contest", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-prevent-strategy", - "provider": "UK Home Office - Prevent duty guidance", - "endpoint": "https://www.gov.uk/government/publications/prevent-duty-guidance", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "met-office-seasonal-advice", - "provider": "Met Office - Seasonal Advice", - "endpoint": "https://www.metoffice.gov.uk/weather/warnings-and-advice/seasonal-advice", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "mi5-uk-threat-level", - "provider": "MI5 (Security Service) a UK Threat Level", - "endpoint": "https://www.mi5.gov.uk/UKThreat. Level/UKThreat. Level.xml", - "kind": "rss", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "npsa-national-protective-security-authority", - "provider": "NPSA - Activity on GOV.UK", - "endpoint": "https://www.gov.uk/government/organisations/national-protective-security-authority.atom", - "kind": "rss", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-ncsc-all-rss", - "provider": "UK NCSC - All Updates RSS", - "endpoint": "https://www.ncsc.gov.uk/api/1/services/v1/all-rss-feed.xml", - "kind": "rss", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-prevent-duty-guidance", - "provider": "GOV.UK a Prevent Duty Guidance (Collection)", - "endpoint": "https://www.gov.uk/government/collections/prevent-duty-guidance", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-proscribed-terrorist-orgs", - "provider": "GOV.UK a Proscribed Terrorist Organisations", - "endpoint": "https://www.gov.uk/government/publications/proscribed-terror-groups-or-organisations--2", - "kind": "html", - "lane": "sanctions", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hm-treasury-html", - "provider": "HM Treasury", - "endpoint": "https://www.gov.uk/government/organisations/hm-treasury", - "kind": "html", - "lane": "sanctions", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "ofsi-blog-home", - "provider": "OFSI - Blog", - "endpoint": "https://ofsi.blog.gov.uk/", - "kind": "html", - "lane": "sanctions", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dhs-press-releases", - "provider": "US Department of Homeland Security - News", - "endpoint": "https://www.dhs.gov/news", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "nsa-cybersecurity-news", - "provider": "NSA - Cybersecurity Advisories & Guidance", - "endpoint": "https://www.nsa.gov/Press-Room/Press-Releases-Statements/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "rewards-for-justice", - "provider": "U.S. Department of State - Rewards for Justice", - "endpoint": "https://rewardsforjustice.net/rewards/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "state-dept-terrorism", - "provider": "US State Department - Bureau of Counterterrorism", - "endpoint": "https://www.state.gov/bureaus-offices/under-secretary-for-civilian-security-democracy-and-human-rights/bureau-of-counterterrorism/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "cisa-cybersecurity-advisories", - "provider": "CISA - Cybersecurity Alerts & Advisories", - "endpoint": "https://www.cisa.gov/news-events/cybersecurity-advisories", - "kind": "html", - "lane": "oversight", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "us-treasury-ofac-recent-actions", - "provider": "U.S. Treasury (OFAC) - Recent Actions", - "endpoint": "https://ofac.treasury.gov/recent-actions", - "kind": "html", - "lane": "sanctions", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "a-lady-in-london", - "provider": "A Lady in London", - "endpoint": "https://www.aladyinlondon.com/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-24T03:29:13.488Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T03:29:13.488Z", - "lastFailureAt": "2026-04-24T03:29:13.488Z", - "lastCheckedAt": "2026-04-24T03:29:13.488Z" - }, - { - "id": "north-wales-community-alert", - "provider": "North Wales Community Alert", - "endpoint": "https://www.northwalescommunityalert.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 429", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-17T05:46:58.069Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-24T03:29:13.488Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T03:29:13.488Z", - "lastFailureAt": "2026-04-24T03:29:13.488Z", - "lastCheckedAt": "2026-04-24T03:29:13.488Z" - }, - { - "id": "eurojust-press-releases", - "provider": "Eurojust - Press Releases", - "endpoint": "https://www.eurojust.europa.eu/news/press-releases", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "eu-council-jha-meetings", - "provider": "Council of the EU - JHA Press Releases", - "endpoint": "https://www.consilium.europa.eu/en/press/press-releases/?cc%5B%5D=24", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "norway-pst-news", - "provider": "Norwegian Government - News and Press Releases", - "endpoint": "https://www.regjeringen.no/en/whats-new/news-and-press-releases/id4/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "ocam-be-english", - "provider": "CUTA (Belgium) threat analysis", - "endpoint": "https://cuta.belgium.be/", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T22:54:57.851Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "everything-zany", - "provider": "Everything Zany", - "endpoint": "https://everythingzany.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "manic-mum-life", - "provider": "Manic Mum Life", - "endpoint": "https://www.manic-mumdays.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "really-ree", - "provider": "Really Ree", - "endpoint": "https://reallyree.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "my-community-alert", - "provider": "My Community Alert", - "endpoint": "https://www.mycommunityalert.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T19:28:57.337Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T11:47:27.254Z", - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastCheckedAt": "2026-04-23T11:47:27.254Z" - }, - { - "id": "uk-parliament-defence-committee", - "provider": "UK Parliament a Defence Select Committee", - "endpoint": "https://committees.parliament.uk/committee/24/defence-committee/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "curia-press-rss-en", - "provider": "Court of Justice of the European Union - RSS (EN/FR)", - "endpoint": "https://curia.europa.eu/site/rss.jsp?lang=en&second. Lang=fr", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "eu-cellar-rss-atom", - "provider": "Publications Office of the European Union (CELLAR) a RSS/Atom Feeds", - "endpoint": "https://op.europa.eu/en/web/cellar/cellar-data/rss-and-atom-feeds", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "richmond-council-news", - "provider": "Richmond Council a News", - "endpoint": "https://www.richmond.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "wandsworth-council-news", - "provider": "Wandsworth Council a News", - "endpoint": "https://www.wandsworth.gov.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "scotcourts-rss-feeds-page", - "provider": "Scottish Courts and Tribunals - RSS Feeds", - "endpoint": "https://www.scotcourts.gov.uk/rss-feeds/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "london-resilience", - "provider": "Resilience First - Latest Updates", - "endpoint": "https://www.london.gov.uk/programmes-strategies/fire-and-city-resilience/london-resilience-partnership", - "kind": "html", - "lane": "prevention", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 2, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T23:56:26.571Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T23:56:26.571Z", - "lastFailureAt": "2026-04-22T23:56:26.571Z", - "lastCheckedAt": "2026-04-22T23:56:26.571Z" - }, - { - "id": "echr-key-judgments-rss", - "provider": "European Court of Human Rights - Key Judgments RSS", - "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echreng&query=%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28+contentsitename%3AECHR+AND+%28NOT+%28doctype%3DPR+OR+doctype%3DHFCOMOLD+OR+doctype%3DHECOMOLD%29%29+AND+%28%28importance%3D%221%22%29+OR+%28importance%3D%222%22%29+OR+%28importance%3D%223%22%29%29+AND+%28%28documentcollectionid%3D%22GRANDCHAMBER%22%29+OR+%28documentcollectionid%3D%22CHAMBER%22%29+OR+%28documentcollectionid%3D%22DECGRANDCHAMBER%22%29+OR+%28documentcollectionid%3D%22ADMISSIBILITY%22%29%29%29+XRANK%28cb%3D14%29+doctypebranch%3AGRANDCHAMBER%29+XRANK%28cb%3D13%29+doctypebranch%3ADECGRANDCHAMBER%29+XRANK%28cb%3D12%29+doctypebranch%3ACHAMBER%29+XRANK%28cb%3D11%29+doctypebranch%3AADMISSIBILITY%29+XRANK%28cb%3D10%29+doctypebranch%3ACOMMITTEE%29+XRANK%28cb%3D9%29+doctypebranch%3AADMISSIBILITYCOM%29+XRANK%28cb%3D8%29+doctypebranch%3ADECCOMMISSION%29+XRANK%28cb%3D7%29+doctypebranch%3ACOMMUNICATEDCASES%29+XRANK%28cb%3D6%29+doctypebranch%3ACLIN%29+XRANK%28cb%3D5%29+doctypebranch%3AADVISORYOPINIONS%29+XRANK%28cb%3D4%29+doctypebranch%3AREPORTS%29+XRANK%28cb%3D3%29+doctypebranch%3AEXECUTION%29+XRANK%28cb%3D2%29+doctypebranch%3AMERITS%29+XRANK%28cb%3D1%29+doctypebranch%3ASCREENINGPANEL%29+XRANK%28cb%3D4%29+importance%3A1%29+XRANK%28cb%3D3%29+importance%3A2%29+XRANK%28cb%3D2%29+importance%3A3%29+XRANK%28cb%3D1%29+importance%3A4%29+XRANK%28cb%3D2%29+languageisocode%3AENG%29+XRANK%28cb%3D1%29+languageisocode%3AFRE&ranking. Model. Id=4180000c-8692-45ca-ad63-74bc4163871b&sort=kpdate+Descending&start=0", - "kind": "rss", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 400", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T17:39:27.641Z", - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastCheckedAt": "2026-04-22T17:39:27.641Z" - }, - { - "id": "judiciary-uk-news", - "provider": "Judiciary of England and Wales a News", - "endpoint": "https://www.judiciary.uk/feed/", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T11:44:44.316Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T16:17:11.443Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T16:17:11.443Z", - "lastFailureAt": "2026-04-22T16:17:11.443Z", - "lastCheckedAt": "2026-04-22T16:17:11.443Z" - }, - { - "id": "uclh-news", - "provider": "University College London Hospitals a News", - "endpoint": "https://www.uclh.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "west-yorkshire-police-coroner-appeals-rss", - "provider": "West Yorkshire Police - Coroner Appeals Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/coroner-appeals/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "thank-you-for-the-days", - "provider": "Thank you for the days", - "endpoint": "https://thankyouforthedays.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 2, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "west-yorkshire-police-news", - "provider": "West Yorkshire Police a News", - "endpoint": "https://www.westyorkshire.police.uk/news", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nhs-london-nel-news", - "provider": "NHS North East London a News", - "endpoint": "https://northeastlondon.icb.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T10:07:46.576Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-28T10:07:46.576Z", - "lastFailureAt": "2026-04-21T10:07:46.576Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "kingston-council-news", - "provider": "Kingston Council a News", - "endpoint": "https://www.kingston.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-28T08:24:19.478Z", - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "merton-council-news", - "provider": "Merton Council a News", - "endpoint": "https://www.merton.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-28T08:24:19.478Z", - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "cambridge-news", - "provider": "Cambridge News", - "endpoint": "https://www.cambridge-news.co.uk/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-23T22:53:56.180Z" - }, - { - "id": "deadline-news", - "provider": "Deadline News", - "endpoint": "https://www.deadlinenews.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 20 after repeated failures", - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 500", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-24T03:29:13.488Z" - }, - { - "id": "independent-top-stories", - "provider": "The Independent - Top Stories", - "endpoint": "https://www.independent.co.uk/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-23T20:18:46.625Z" - }, - { - "id": "fmcg-gurus", - "provider": "FMCG Gurus", - "endpoint": "https://fmcggurus.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "portugal-pj-news", - "provider": "Policia Judiciaria Portugal - News", - "endpoint": "https://www.policiajudiciaria.pt/noticias/", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T19:18:33.309Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T15:59:44.503Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T15:59:44.503Z", - "lastFailureAt": "2026-04-20T15:59:44.503Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "guardian-uk-top-stories", - "provider": "The Guardian - UK Top Stories", - "endpoint": "https://www.theguardian.com/uk/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-20T06:30:13.977Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T23:43:16.267Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "silly-old-sod", - "provider": "Silly Old Sod", - "endpoint": "https://www.sillyoldsod.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent timeouts — endpoint may be overloaded or unreachable", - "quarantinedAt": "2026-04-20T04:05:33.139Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T04:05:33.139Z", - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "serious-fraud-office-news", - "provider": "Serious Fraud Office a News", - "endpoint": "https://www.gov.uk/search/news-and-communications?organisations%5B%5D=serious-fraud-office&parent=serious-fraud-office", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T04:05:33.139Z", - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "cheshire-police-alert", - "provider": "Cheshire Police Alert", - "endpoint": "https://www.cheshirepolicealert.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dc-police-community-messaging", - "provider": "Dorset and Cornwall Police - Community Messaging", - "endpoint": "https://community-messaging.dc.police.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "devon-cornwall-alerts", - "provider": "Devon and Cornwall Alerts", - "endpoint": "https://alerts.dc.police.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "south-yorkshire-police-alerts", - "provider": "South Yorkshire Police Alerts", - "endpoint": "https://www.sypalerts.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "stay-in-the-know-home", - "provider": "Stay In The Know - Community Alerts", - "endpoint": "https://www.stayintheknow.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "stay-in-the-know-latest-alerts", - "provider": "Stay In The Know - Latest Alerts", - "endpoint": "https://www.stayintheknow.co.uk/Content/Pages/Latest-Alerts", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-midlands-community-alerts", - "provider": "WMNow - Community Alerts", - "endpoint": "https://www.wmnow.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-community-alert", - "provider": "West Yorkshire Community Alert", - "endpoint": "https://www.wypcommunityalert.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "france24-europe-rss", - "provider": "France 24 a Europe (RSS)", - "endpoint": "https://www.france24.com/en/europe/rss", - "kind": "rss", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-19T16:03:49.134Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T16:03:49.134Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T06:12:01.477Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T05:47:56.833Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T05:47:56.833Z", - "lastFailureAt": "2026-04-23T05:47:56.833Z", - "lastCheckedAt": "2026-04-23T05:47:56.833Z" - }, - { - "id": "bbc-news-uk-politics-legacy", - "provider": "BBC News a UK Politics (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/uk_politics/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-19T03:30:54.684Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T03:30:54.684Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T15:59:44.503Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "rusi-home", - "provider": "RUSI", - "endpoint": "https://www.rusi.org/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 20 after repeated failures", - "quarantinedAt": "2026-04-19T03:30:54.684Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T03:30:54.684Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T03:30:54.684Z", - "lastFailureAt": "2026-04-19T03:30:54.684Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "gnet-youth-rss", - "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", - "endpoint": "https://gnet-research.org/tag/youth/feed/", - "kind": "rss", - "lane": "prevention", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T22:00:46.520Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T11:07:28.674Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T12:15:37.169Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T22:00:46.520Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T17:16:47.386Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T17:39:27.641Z", - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastCheckedAt": "2026-04-22T17:39:27.641Z" - }, - { - "id": "ealing-council-news", - "provider": "Ealing Council a News", - "endpoint": "https://www.ealing.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T21:09:53.488Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T21:09:53.488Z", - "lastFailureAt": "2026-04-18T21:09:53.488Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-ejustice-news-rss", - "provider": "European e-Justice - News RSS", - "endpoint": "https://e-justice.europa.eu/rss/news_en", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-18T13:27:18.679Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T13:27:18.679Z", - "lastFailureAt": "2026-04-18T13:27:18.679Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "just-security", - "provider": "Just Security a Law, Rights & National Security", - "endpoint": "https://www.justsecurity.org/feed/", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T09:29:55.311Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T23:55:39.351Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T09:29:55.311Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T04:05:33.139Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "evening-shire", - "provider": "Evening Shire", - "endpoint": "https://eveningshire.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T07:21:41.099Z", - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastCheckedAt": "2026-04-23T20:18:46.625Z" - }, - { - "id": "quadrant2design-exhibiting-guides", - "provider": "Quadrant2. Design Exhibiting Guides", - "endpoint": "https://www.quadrant2design.com/exhibiting-guides/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T07:21:41.099Z", - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastCheckedAt": "2026-04-23T23:57:53.617Z" - }, - { - "id": "semibold", - "provider": "Semibold", - "endpoint": "https://www.semibold.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T07:21:41.099Z", - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "gnet-radicalisation-rss", - "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", - "endpoint": "https://gnet-research.org/tag/radicalisation/feed/", - "kind": "rss", - "lane": "prevention", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T21:08:30.446Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "barking-dagenham-council-news", - "provider": "Barking and Dagenham Council a News", - "endpoint": "https://www.lbbd.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "hammersmith-fulham-news", - "provider": "Hammersmith and Fulham Council a News", - "endpoint": "https://www.lbhf.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "royal-greenwich-news", - "provider": "Royal Borough of Greenwich a News", - "endpoint": "https://www.royalgreenwich.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-ncsc-threat-reports", - "provider": "National Cyber Security Centre (UK) a Threat Reports", - "endpoint": "https://www.ncsc.gov.uk/api/1/services/v1/report-rss-feed.xml", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T21:08:30.446Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-parliament-isc", - "provider": "UK Parliament a Intelligence and Security Committee (Reports & News)", - "endpoint": "https://isc.independent.gov.uk/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ecfr-feeds-index", - "provider": "ECFR - Feeds", - "endpoint": "https://ecfr.eu/feeds/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "statewatch-news", - "provider": "Statewatch - News", - "endpoint": "https://www.statewatch.org/news/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "clingendael-publications", - "provider": "Clingendael Institute a Publications", - "endpoint": "https://www.clingendael.org/publications", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ecfr-publications", - "provider": "European Council on Foreign Relations (ECFR) a Publications", - "endpoint": "https://ecfr.eu/publications/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "financial-times-world", - "provider": "Financial Times a World", - "endpoint": "https://www.ft.com/world", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "politico-europe", - "provider": "Politico Europe", - "endpoint": "https://www.politico.eu/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "acled-updates", - "provider": "ACLED a Updates and Analysis", - "endpoint": "https://acleddata.com/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "resolve-network-research", - "provider": "RESOLVE Network a Research", - "endpoint": "https://www.resolvenet.org/news", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 17 after repeated failures", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "reuters-uk", - "provider": "Reuters a UK News", - "endpoint": "https://www.reuters.com/world/uk/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "soufan-center-intelbrief", - "provider": "The Soufan Center a Intel. Brief", - "endpoint": "https://thesoufancenter.org/category/intelbrief/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "tony-blair-institute-news", - "provider": "Tony Blair Institute for Global Change a Publications", - "endpoint": "https://institute.global/insights", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "chatham-house-home", - "provider": "Chatham House", - "endpoint": "https://www.chathamhouse.org/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "chatham-house-security-defence", - "provider": "Chatham House - Security and Defence", - "endpoint": "https://www.chathamhouse.org/topics/security-and-defence", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "institute-global-home", - "provider": "Institute for Global Change", - "endpoint": "https://www.institute.global/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "wiltshire-999s", - "provider": "Wiltshire 999s", - "endpoint": "https://www.wiltshire999s.co.uk/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "icsr-kcl", - "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", - "endpoint": "https://icsr.info/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "rand-terrorism-topic", - "provider": "RAND - Terrorism Topic Updates", - "endpoint": "https://www.rand.org/topics/terrorism.html", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "start-baad-database", - "provider": "National Consortium for the Study of Terrorism (START) - Big Allied and Dangerous (BAAD) Database", - "endpoint": "https://www.start.umd.edu/baad/database/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "start-center-publications", - "provider": "START Center (UMD) - News & Publications", - "endpoint": "https://www.start.umd.edu/news", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "bdk-rss", - "provider": "Bund Deutscher Kriminalbeamter - RSS", - "endpoint": "https://www.bdk.de/rss/alle-nachrichten/RSS", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "euractiv-security-rss", - "provider": "BBC News - Europe", - "endpoint": "https://feeds.bbci.co.uk/news/world/europe/rss.xml", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "isd-global-publications", - "provider": "ISD - Publications", - "endpoint": "https://www.isdglobal.org/publications/", - "kind": "html", - "lane": "prevention", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "dw-europe-rss", - "provider": "Deutsche Welle a Europe (RSS)", - "endpoint": "https://rss.dw.com/rdf/rss-en-eu", - "kind": "rss", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "ap-top-news", - "provider": "BBC News - Top Stories", - "endpoint": "https://feeds.bbci.co.uk/news/rss.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "crisis-group", - "provider": "International Crisis Group a Research & Analysis", - "endpoint": "https://www.crisisgroup.org/rss.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "crisis-group-europe", - "provider": "International Crisis Group a Europe (RSS)", - "endpoint": "https://www.crisisgroup.org/rss/56", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "lawfare-blog", - "provider": "Just Security - National Security Analysis", - "endpoint": "https://www.justsecurity.org/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "henry-jackson-society-news", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=henry-jackson-society-news", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun-all", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feeds/all/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun-all-english", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feeds/news-app-english-001-all/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun-homepage", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feeds/favourite-homepage/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun-news-english", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feeds/news-app-english-007-news/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "metro", - "provider": "BBC News - UK", - "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml?source=metro", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "pinknews", - "provider": "Pink. News", - "endpoint": "https://www.pinknews.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T13:19:06.686Z", - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "the-daily-mash", - "provider": "The Daily Mash", - "endpoint": "https://www.thedailymash.co.uk/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T13:19:06.686Z", - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastCheckedAt": "2026-04-23T22:53:56.180Z" - }, - { - "id": "the-scottish-sun", - "provider": "The Scottish Sun", - "endpoint": "https://www.thescottishsun.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "elluminet-press", - "provider": "9to5. Mac", - "endpoint": "https://9to5mac.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 20 after repeated failures", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "faded-spring", - "provider": "Emily Underworld", - "endpoint": "https://emilyunderworld.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "ian-neate-blog", - "provider": "9to5. Mac", - "endpoint": "https://9to5mac.com/feed/?source=ian-neate-blog", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "sks-business-services", - "provider": "SKS Business Services", - "endpoint": "https://www.sksbusinessservices.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "streetspace", - "provider": "Streetspace", - "endpoint": "https://streetspacegroup.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "police-scotland-news", - "provider": "Police Scotland news", - "endpoint": "https://www.scotland.police.uk/what-s-happening/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 23 after repeated failures", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T19:32:35.264Z", - "lastFailureAt": "2026-04-19T19:32:35.264Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "frontex-news-releases", - "provider": "Frontex a News Releases", - "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/", - "kind": "html", - "lane": "border", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "enisa-news", - "provider": "ENISA (EU Cybersecurity Agency) a News", - "endpoint": "https://www.enisa.europa.eu/news", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "enisa-rss-transition-page", - "provider": "ENISA - RSS Feeds Transition Notice", - "endpoint": "https://www.enisa.europa.eu/rss-feeds-discontinued-new-subscription-mechanism-coming-soon", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eurojust-press-news-html", - "provider": "Eurojust - Press Releases and News", - "endpoint": "https://www.eurojust.europa.eu/media-and-events/press-releases-and-news", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "europol-media-press", - "provider": "Europol a Media and Press", - "endpoint": "https://www.europol.europa.eu/media-press", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "europol-newsroom-html", - "provider": "Europol - Newsroom", - "endpoint": "https://www.europol.europa.eu/media-press/newsroom", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "finland-supo-news", - "provider": "Finnish Security Intelligence Service - News", - "endpoint": "https://supo.fi/en/current-issues", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "german-interior-ministry-press", - "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", - "endpoint": "https://www.bmz.de/en/feed.rss", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 20 after repeated failures", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 400", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "paris-prefecture-police-rss-page", - "provider": "Paris Prefecture of Police - RSS", - "endpoint": "https://www.prefecturedepolice.interieur.gouv.fr/presentation/les-directions-et-services/le-cabinet-du-prefet-de-police/service-de-la-communication/abonnez-vous-aux-flux-rss", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "spain-interior-ministry-news", - "provider": "Spanish Ministry of the Interior - Press", - "endpoint": "https://www.interior.gob.es/opencms/en/prensa/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "ertzaintza-news", - "provider": "Ertzaintza - News", - "endpoint": "https://www.ertzaintza.euskadi.eus/lfr/eu/webertzaintza/noticias", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "finland-police-news", - "provider": "Finnish Police - News", - "endpoint": "https://poliisi.fi/en/news", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "paris-prefecture-police-press-releases", - "provider": "Paris Prefecture of Police - Press Releases", - "endpoint": "https://www.prefecturedepolice.interieur.gouv.fr/actualites-et-presse/communiques-de-presse/communiques-de-presse", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "romanian-police-news", - "provider": "Romanian Police - News", - "endpoint": "https://www.politiaromana.ro/en/news", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eu-commission-presscorner-home", - "provider": "Council of the EU - Press Releases (RSS)", - "endpoint": "https://www.consilium.europa.eu/en/rss/pressreleases.ashx?source=eu-commission-presscorner-home", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "eu-council-fight-against-terrorism", - "provider": "Council of the EU - Fight Against Terrorism", - "endpoint": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eu-council-rss-index", - "provider": "Council of the EU - RSS Index", - "endpoint": "https://www.consilium.europa.eu/en/about-site/rss/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eu-ct-coordinator", - "provider": "EU Counter-Terrorism Coordinator a Council of the EU", - "endpoint": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/eu-counter-terrorism-coordinator/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eu-fra-rss", - "provider": "EU Agency for Fundamental Rights (FRA) a RSS", - "endpoint": "https://fra.europa.eu/en/content/rss", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eurojust-rss-feeds-page", - "provider": "Eurojust - RSS Feeds", - "endpoint": "https://www.eurojust.europa.eu/rss-feeds", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "europol-tesat-report", - "provider": "Europol - TESAT Report", - "endpoint": "https://www.europol.europa.eu/publications-events/main-reports/tesat-report", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "fra-rss", - "provider": "Human Rights Watch - News RSS", - "endpoint": "https://www.hrw.org/rss/news", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "europol-eu-iru", - "provider": "Europol a EU Internet Referral Unit (EU IRU)", - "endpoint": "https://www.europol.europa.eu/about-europol/european-counter-terrorism-centre-ectc/eu-internet-referal-unit-eu-iru", - "kind": "html", - "lane": "prevention", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ncsc-nl-rss", - "provider": "NCSC Netherlands - RSS", - "endpoint": "https://feeds.ncsc.nl/nieuws.rss", - "kind": "rss", - "lane": "prevention", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "eu-council-terrorism-sanctions", - "provider": "Council of the EU - Sanctions Against Terrorism", - "endpoint": "https://www.consilium.europa.eu/en/policies/sanctions-against-terrorism/", - "kind": "html", - "lane": "sanctions", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "unhcr-europe-news", - "provider": "UNHCR Europe a News", - "endpoint": "https://www.unhcr.org/europe/news", - "kind": "html", - "lane": "border", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "french-interior-ministry-news", - "provider": "French Ministry of the Interior - News", - "endpoint": "https://www.interieur.gouv.fr/actualites", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "netherlands-nctv-news", - "provider": "Dutch NCTV - News", - "endpoint": "https://www.nctv.nl/actueel", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "french-gendarmerie-news", - "provider": "Gendarmerie Nationale - News", - "endpoint": "https://www.gendarmerie.interieur.gouv.fr/gendarmerie/actualites", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "french-police-nationale-news", - "provider": "Police Nationale - News", - "endpoint": "https://www.police-nationale.interieur.gouv.fr/actualites", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ireland-gardai-press", - "provider": "An Garda Siochana - Press Releases", - "endpoint": "https://www.garda.ie/en/about-us/our-departments/office-of-corporate-communications/press-releases/", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "paris-police-prefecture-news", - "provider": "France24 - France (RSS)", - "endpoint": "https://www.france24.com/en/france/rss", - "kind": "rss", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "portugal-psp-news", - "provider": "The Portugal News - Crime", - "endpoint": "https://www.theportugalnews.com/news/crime", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "coe-counter-terrorism", - "provider": "Council of Europe a Counter-Terrorism", - "endpoint": "https://www.coe.int/en/web/counter-terrorism/news-updates", - "kind": "html", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "netherlands-prosecution-news", - "provider": "Dutch Public Prosecution Service - News", - "endpoint": "https://www.om.nl/actueel/nieuws", - "kind": "html", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "pst-no-english", - "provider": "PST (Norway) English reporting page", - "endpoint": "https://www.pst.no/en/report/", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ran-network", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=ran-network", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "supo-fi-english", - "provider": "SUPO Finland news and press releases", - "endpoint": "https://supo.fi/en/news-and-press-releases", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "iom-news", - "provider": "IOM (International Organization for Migration) a News", - "endpoint": "https://www.iom.int/news", - "kind": "html", - "lane": "border", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "unsc-counter-terrorism-committee", - "provider": "UN Security Council - Counter-Terrorism Committee (CTC) Updates", - "endpoint": "https://www.un.org/securitycouncil/ctc/news", - "kind": "html", - "lane": "oversight", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "fatf-news", - "provider": "Financial Action Task Force (FATF) a News", - "endpoint": "https://www.fatf-gafi.org/en/publications.html", - "kind": "html", - "lane": "sanctions", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "interpol-notices", - "provider": "INTERPOL a Notices", - "endpoint": "https://www.interpol.int/How-we-work/Notices", - "kind": "html", - "lane": "sanctions", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "unsc-1267-press-releases", - "provider": "UN Security Council - ISIL/Da'esh & Al-Qaeda Sanctions Committee Press Releases", - "endpoint": "https://main.un.org/securitycouncil/en/sanctions/1267/press-releases", - "kind": "html", - "lane": "sanctions", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "unsc-consolidated-list", - "provider": "UN Security Council - Consolidated Sanctions List Updates (RSS)", - "endpoint": "https://main.un.org/securitycouncil/en/rss-updates-unsc-consolidated-list", - "kind": "rss", - "lane": "sanctions", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "barnet-council-news", - "provider": "Barnet Post", - "endpoint": "https://barnetpost.co.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "city-of-london-police-fraud-reporting", - "provider": "City of London Police - Fraud Reporting", - "endpoint": "https://www.cityoflondon.police.uk/ro/report/fo/v1/fraud/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cnwl-news", - "provider": "Central and North West London NHS Foundation Trust a News", - "endpoint": "https://www.cnwl.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "east-london-nhs-news", - "provider": "East London NHS Foundation Trust a News", - "endpoint": "https://www.elft.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "enfield-council-news", - "provider": "Enfield Council a News and Events", - "endpoint": "https://www.enfield.gov.uk/news-and-events", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "haringey-council-news", - "provider": "Haringey Community Press", - "endpoint": "https://haringeycommunitypress.co.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "harrow-council-news", - "provider": "Harrow Council a News", - "endpoint": "https://www.harrow.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "heathrow-media-centre", - "provider": "Heathrow a Media Centre", - "endpoint": "https://mediacentre.heathrow.com/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "imperial-healthcare-news", - "provider": "Imperial College Healthcare NHS Trust a News", - "endpoint": "https://www.imperial.nhs.uk/about-us/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "kensington-chelsea-newsroom", - "provider": "Royal Borough of Kensington and Chelsea a Newsroom", - "endpoint": "https://www.rbkc.gov.uk/newsroom", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "lewisham-council-news", - "provider": "Salamander News", - "endpoint": "https://salamandernews.org/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "london-ambulance-news", - "provider": "London Ambulance Service a News", - "endpoint": "https://www.londonambulance.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-city-airport-media-centre", - "provider": "London City Airport a Media Centre", - "endpoint": "https://www.londoncityairport.com/corporate/media-centre", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-councils-news", - "provider": "London Councils a News", - "endpoint": "https://www.londoncouncils.gov.uk/news-and-press-releases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-fire-brigade-news", - "provider": "London Fire Brigade a News", - "endpoint": "https://www.london-fire.gov.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-gov-home", - "provider": "London.gov.uk", - "endpoint": "https://www.london.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-gov-press-releases-html", - "provider": "London.gov.uk - Press Releases", - "endpoint": "https://www.london.gov.uk/press-releases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nhs-london-ncl-news", - "provider": "NHS North Central London a News", - "endpoint": "https://nclhealthandcare.org.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nhs-london-swl-news", - "provider": "NHS South West London a News", - "endpoint": "https://www.southwestlondon.icb.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "north-middlesex-news", - "provider": "North Middlesex University Hospital a News", - "endpoint": "https://www.northmid.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "port-of-london-authority-news", - "provider": "Port of London Authority a News", - "endpoint": "https://pla.co.uk/News", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "royal-free-london-news", - "provider": "Royal Free London NHS Foundation Trust a News", - "endpoint": "https://www.royalfree.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "southwark-newsroom", - "provider": "Southwark Council a Newsroom", - "endpoint": "https://news.southwark.gov.uk/newsroom/news/rss", - "kind": "rss", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "tavistock-portman-news", - "provider": "Tavistock and Portman NHS Foundation Trust a News", - "endpoint": "https://tavistockandportman.nhs.uk/about-us/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "tfl-press-releases", - "provider": "Transport for London - Press Releases", - "endpoint": "https://tfl.gov.uk/info-for/media/press-releases?source=tfl-press-releases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "tfl-press-releases-html", - "provider": "Transport for London - Press Releases", - "endpoint": "https://tfl.gov.uk/info-for/media/press-releases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "city-of-london-police-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=city-of-london-police-news", - "kind": "html", - "lane": "incidents", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "city-of-london-police-news-html", - "provider": "City of London Police - News", - "endpoint": "https://www.cityoflondon.police.uk/news/city-of-london-police/news/", - "kind": "html", - "lane": "incidents", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "city-of-london-police-newsroom", - "provider": "Metropolitan Police Service - News", - "endpoint": "https://news.met.police.uk/", - "kind": "html", - "lane": "incidents", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "ct-policing-london", - "provider": "Counter Terrorism Policing London", - "endpoint": "https://www.counterterrorism.police.uk/counter-terrorism-policing-london/", - "kind": "html", - "lane": "incidents", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "mopac-html", - "provider": "Mayor's Office for Policing and Crime", - "endpoint": "https://www.london.gov.uk/programmes-strategies/mayors-office-policing-and-crime-mopac", - "kind": "html", - "lane": "oversight", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "bbc-news-front-page-legacy", - "provider": "BBC News a Front Page (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/front_page/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T22:12:37.099Z", - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bbc-news-uk", - "provider": "BBC News a UK", - "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T22:12:37.099Z", - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "essex-police-news", - "provider": "Essex Police a News", - "endpoint": "https://www.essex.police.uk/news/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "kent-police-news", - "provider": "Kent Police a News", - "endpoint": "https://www.kent.police.uk/news/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "mi5-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=mi5-news", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "national-crime-agency-news", - "provider": "National Crime Agency a News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "report-fraud-home", - "provider": "Report Fraud", - "endpoint": "https://www.reportfraud.police.uk/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "report-fraud-newsroom", - "provider": "Report Fraud - Newsroom", - "endpoint": "https://www.reportfraud.police.uk/collection/newsroom/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "church-of-england-newspaper", - "provider": "Church of England Newspaper", - "endpoint": "https://www.churchnewspaper.com/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T22:12:37.099Z", - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bedfordshire-police-news", - "provider": "Bedfordshire Police - News", - "endpoint": "https://www.beds.police.uk/news/bedfordshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "bedfordshire-police-news-search", - "provider": "Bedfordshire Police - News Search", - "endpoint": "https://www.beds.police.uk/news/news-search/?ct=News", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "british-transport-police-news", - "provider": "British Transport Police Authority - News Feed", - "endpoint": "https://btpa.police.uk/feed/", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "btp-british-transport-police-news-html", - "provider": "British Transport Police - News", - "endpoint": "https://www.btp.police.uk/news/british-transport-police/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cambridgeshire-police-news-search", - "provider": "Cambridgeshire Police - News Search", - "endpoint": "https://www.cambs.police.uk/news/news-search/?ct=News", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cheshire-police-news", - "provider": "Cheshire Constabulary - News", - "endpoint": "https://www.cheshire.police.uk/news/cheshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cleveland-police-news", - "provider": "Cleveland Police - News", - "endpoint": "https://www.cleveland.police.uk/news/cleveland/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cps-news-centre", - "provider": "Crown Prosecution Service a News Centre", - "endpoint": "https://www.cps.gov.uk/news", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-north-west", - "provider": "Counter Terrorism Policing North West", - "endpoint": "https://www.counterterrorism.police.uk/north-west/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-uk-latest-news", - "provider": "Counter Terrorism Policing UK a Latest News", - "endpoint": "https://www.counterterrorism.police.uk/latest-news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-uk-rss-feed", - "provider": "Counter Terrorism Policing UK - Latest News", - "endpoint": "https://www.counterterrorism.police.uk/latest-news/?source=ct-policing-uk-rss-feed", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "cumbria-police-news", - "provider": "Cumbria Police - News", - "endpoint": "https://www.cumbria.police.uk/news/cumbria/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cumbria-police-newsroom", - "provider": "Cumbria Police - Newsroom", - "endpoint": "https://www.news.cumbria.police.uk/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "derbyshire-police-news", - "provider": "Derbyshire Police - News", - "endpoint": "https://www.derbyshire.police.uk/news/derbyshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "devon-and-cornwall-police-newsroom", - "provider": "Devon and Cornwall Police - Newsroom", - "endpoint": "https://news.devon-cornwall.police.uk/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "devon-cornwall-police-news", - "provider": "Devon and Cornwall Police - News", - "endpoint": "https://www.devon-cornwall.police.uk/news/devon-cornwall/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "dorset-police-news", - "provider": "Dorset Police - News", - "endpoint": "https://www.dorset.police.uk/news/dorset/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "dorset-police-newsroom", - "provider": "Dorset Police - Newsroom", - "endpoint": "https://news.dorset.police.uk/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "durham-constabulary-news", - "provider": "Durham Constabulary a News", - "endpoint": "https://www.durham.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "durham-police-durham-news", - "provider": "Durham Police - Durham News", - "endpoint": "https://www.durham.police.uk/news/durham/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "dyfed-powys-police-news", - "provider": "Dyfed-Powys Police - News", - "endpoint": "https://www.dyfed-powys.police.uk/news/dyfed-powys/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "essex-police-news-html", - "provider": "Essex Police - News", - "endpoint": "https://www.essex.police.uk/news/essex/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gloucestershire-police-news", - "provider": "Gloucestershire Police - News", - "endpoint": "https://www.gloucestershire.police.uk/news/gloucestershire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gmp-news", - "provider": "Greater Manchester Police a News", - "endpoint": "https://www.gmp.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "greater-manchester-police-news", - "provider": "Greater Manchester Police - News", - "endpoint": "https://www.gmp.police.uk/news/greater-manchester/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gwent-police-news", - "provider": "Gwent Police - News", - "endpoint": "https://www.gwent.police.uk/news/gwent/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "hampshire-police-news", - "provider": "Hampshire & Isle of Wight Constabulary a News", - "endpoint": "https://www.hampshire.police.uk/news/hampshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "hertfordshire-police-news", - "provider": "Hertfordshire Constabulary a News", - "endpoint": "https://www.herts.police.uk/news/hertfordshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "humberside-police-news-search", - "provider": "Humberside Police - News Search", - "endpoint": "https://www.humberside.police.uk/news/news-search/?ct=News", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "kent-police-news-html", - "provider": "Kent Police - News", - "endpoint": "https://www.kent.police.uk/news/kent/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "lancashire-constabulary-news", - "provider": "Lancashire Constabulary a News", - "endpoint": "https://www.lancashire.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "leicestershire-police-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=leicestershire-police-news", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "lincolnshire-police-news", - "provider": "Lincolnshire Police - News", - "endpoint": "https://www.lincs.police.uk/news/lincolnshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "merseyside-police-news", - "provider": "Merseyside Police a News", - "endpoint": "https://www.merseyside.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "merseyside-police-news-html", - "provider": "Merseyside Police - News", - "endpoint": "https://www.merseyside.police.uk/news/merseyside-police/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "norfolk-constabulary-news", - "provider": "Norfolk Constabulary - News", - "endpoint": "https://www.norfolk.police.uk/news/norfolk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "north-wales-police-news", - "provider": "North Wales Police - News", - "endpoint": "https://www.northwales.police.uk/news/north-wales/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "north-yorkshire-police-news-html", - "provider": "North Yorkshire Police - News", - "endpoint": "https://www.northyorkshire.police.uk/news/north-yorkshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "northamptonshire-police-news-html", - "provider": "Northamptonshire Police - News", - "endpoint": "https://www.northants.police.uk/news/northants/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "northumbria-police-news", - "provider": "North East Bylines", - "endpoint": "https://northeastbylines.co.uk/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "northumbria-police-northumbria-news", - "provider": "Northumbria Police - Northumbria News", - "endpoint": "https://www.northumbria.police.uk/news/northumbria/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nottinghamshire-police-news", - "provider": "Nottinghamshire Police a News", - "endpoint": "https://www.nottinghamshire.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nottinghamshire-police-nottinghamshire-news", - "provider": "Nottinghamshire Police - Nottinghamshire News", - "endpoint": "https://www.nottinghamshire.police.uk/news/nottinghamshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "psni-news", - "provider": "Police Service of Northern Ireland a News", - "endpoint": "https://www.psni.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "south-wales-police-news", - "provider": "South Wales Police - News", - "endpoint": "https://www.south-wales.police.uk/news/south-wales/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "south-yorkshire-police-news", - "provider": "South Yorkshire Police a News", - "endpoint": "https://www.southyorkshire.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "staffordshire-police-news", - "provider": "Staffordshire Police a News", - "endpoint": "https://www.staffordshire.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "staffordshire-police-staffordshire-news", - "provider": "Staffordshire Police - Staffordshire News", - "endpoint": "https://www.staffordshire.police.uk/news/staffordshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "suffolk-constabulary-news", - "provider": "Suffolk Constabulary - News", - "endpoint": "https://www.suffolk.police.uk/news/suffolk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "surrey-police-news", - "provider": "Surrey Police a News", - "endpoint": "https://www.surrey.police.uk/news/surrey/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "sussex-police-news", - "provider": "Sussex Police a News", - "endpoint": "https://www.sussex.police.uk/news/sussex/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "thames-valley-police-news", - "provider": "Thames Valley Police a News", - "endpoint": "https://www.thamesvalley.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "thames-valley-police-news-html", - "provider": "Thames Valley Police - Thames Valley News", - "endpoint": "https://www.thamesvalley.police.uk/news/thames-valley/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "warwickshire-police-news", - "provider": "Warwickshire Connected - Latest Alerts", - "endpoint": "https://www.warwickshireconnected.com/Content/Pages/Latest-Alerts", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "west-mercia-police-news-html", - "provider": "West Mercia Police - News", - "endpoint": "https://www.westmercia.police.uk/news/west-mercia/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "west-midlands-police-news", - "provider": "West Midlands Police a News", - "endpoint": "https://www.westmidlands.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "west-yorkshire-police-missing-rss", - "provider": "West Yorkshire Police - Missing Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/missing/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "wiltshire-police-news", - "provider": "Wiltshire Police - News", - "endpoint": "https://www.wiltshire.police.uk/news/wiltshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cps-homepage", - "provider": "Crown Prosecution Service", - "endpoint": "https://www.cps.gov.uk/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gov-uk-hmic", - "provider": "HM Inspectorate of Constabulary a GOV.UK", - "endpoint": "https://hmicfrs.justiceinspectorates.gov.uk/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gov-uk-parliament-jcnss", - "provider": "UK Parliament a Joint Committee on National Security Strategy", - "endpoint": "https://committees.parliament.uk/committee/54/joint-committee-on-the-national-security-strategy/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "lords-in-focus-rss", - "provider": "Hansard Society - Despatch Box", - "endpoint": "https://www.hansardsociety.org.uk/blog", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "lords-library-notes-rss", - "provider": "Hansard Society - Despatch Box", - "endpoint": "https://www.hansardsociety.org.uk/blog?source=lords-library-notes-rss", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "police-ombudsman-current-investigations", - "provider": "Police Ombudsman - Current Investigations", - "endpoint": "https://www.policeombudsman.org/investigation-reports/current-investigations", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "police-uk-outcomes-at-location-1609590", - "provider": "Police Data UK - Outcomes At Location API Docs", - "endpoint": "https://data.police.uk/docs/method/outcomes-at-location/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "uk-parliament-business-news", - "provider": "UK Parliament - Business News", - "endpoint": "https://www.parliament.uk/business/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-parliament-foreign-affairs-committee", - "provider": "UK Parliament a Foreign Affairs Select Committee", - "endpoint": "https://committees.parliament.uk/committee/78/foreign-affairs-committee/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-parliament-justice-committee", - "provider": "UK Parliament a Justice Select Committee", - "endpoint": "https://committees.parliament.uk/committee/102/justice-committee/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-prevent-programme", - "provider": "Counter Terrorism Policing - Prevent", - "endpoint": "https://www.counterterrorism.police.uk/what-we-do/counter-terrorism/prevent/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-what-you-can-do", - "provider": "Counter Terrorism Policing - What You Can Do", - "endpoint": "https://www.counterterrorism.police.uk/what-you-can-do/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gov-uk-report-terrorism", - "provider": "GOV.UK - Report Terrorism", - "endpoint": "https://www.gov.uk/report-terrorism", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gov-uk-terrorism-national-emergency", - "provider": "GOV.UK - Terrorism National Emergency", - "endpoint": "https://www.gov.uk/terrorism-national-emergency", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "mi5-terrorism-threat-levels", - "provider": "MI5 - Terrorism Threat Levels", - "endpoint": "https://www.mi5.gov.uk/threats-and-advice/terrorism-threat-levels", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "northamptonshire-talking", - "provider": "Northamptonshire Talking", - "endpoint": "https://www.northamptonshiretalking.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "npsa-blog", - "provider": "NPSA - Blog", - "endpoint": "https://www.npsa.gov.uk/blog", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "npsa-blog-news", - "provider": "NPSA - Blog News", - "endpoint": "https://www.npsa.gov.uk/blog/news", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "protectuk", - "provider": "ProtectUK (NPSA) a Protective Security Guidance", - "endpoint": "https://www.protectuk.police.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-ncsc-homepage", - "provider": "UK NCSC - Homepage", - "endpoint": "https://www.ncsc.gov.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-sanctions-list", - "provider": "UK Sanctions List (FCDO) a Consolidated List (XML Service)", - "endpoint": "https://sanctionslist.fcdo.gov.uk/docs/UK-Sanctions-List.xml", - "kind": "html", - "lane": "sanctions", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "fbi-national-press-releases", - "provider": "FBI - National Press Releases (RSS)", - "endpoint": "https://www.fbi.gov/feeds/national-press-releases/RSS", - "kind": "rss", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "fbi-stories", - "provider": "FBI - Top Stories (RSS)", - "endpoint": "https://www.fbi.gov/feeds/fbi-top-stories/rss.xml", - "kind": "rss", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "fbi-top-stories", - "provider": "FBI - Top Stories (RSS)", - "endpoint": "https://www.fbi.gov/feeds/fbi-top-stories/rss.xml?source=fbi-top-stories", - "kind": "rss", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "us-house-homeland-security", - "provider": "US House Committee on Homeland Security - News", - "endpoint": "https://homeland.house.gov/news/", - "kind": "html", - "lane": "oversight", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "belgium-crisis-centre-news", - "provider": "Belgian National Crisis Centre - Newsroom", - "endpoint": "https://crisiscenter.be/en/newsroom", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 5 after repeated failures", - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "german-bka-press", - "provider": "German BKA - Press Releases (2026 archive)", - "endpoint": "https://www.bka.de/DE/Presse/Listenseite_Pressemitteilungen/2026/2026_node.html", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 5 after repeated failures", - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "policia-nacional-news", - "provider": "Policia Nacional - Press", - "endpoint": "https://www.policia.es/_es/comunicacion_salaprensa.php", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 5 after repeated failures", - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-19T18:05:04.781Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T18:05:04.781Z", - "lastFailureAt": "2026-04-19T18:05:04.781Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "bfv-de-english", - "provider": "BfV service page (Federal Office for the Protection of the Constitution)", - "endpoint": "https://www.verfassungsschutz.de/EN/service/service_node.html", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T11:07:28.674Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T11:07:28.674Z", - "lastFailureAt": "2026-04-17T11:07:28.674Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "german-bka-press-releases-de", - "provider": "BKA Germany - Press Releases", - "endpoint": "https://www.bka.de/DE/Aktuelle. Informationen/Aktuelle. Meldungen/Pressemeldungen/pressemitteilungen_node.html", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Infrastructure instability — mixed timeout and network errors; auto-retry likely to recover", - "quarantinedAt": "2026-04-17T08:04:04.612Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T07:32:24.475Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T17:39:27.641Z", - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastCheckedAt": "2026-04-22T17:39:27.641Z" - }, - { - "id": "surgezirc-uk", - "provider": "Surge. Zirc UK", - "endpoint": "https://surgezirc.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T08:04:04.612Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T14:11:10.963Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T11:47:27.254Z", - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastCheckedAt": "2026-04-23T11:47:27.254Z" - }, - { - "id": "arcticdry", - "provider": "Arctic. Dry", - "endpoint": "https://www.arcticdry.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T08:04:04.612Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T08:04:04.612Z", - "lastFailureAt": "2026-04-17T08:04:04.612Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "police-uk-all-crime-leicester", - "provider": "Police.uk - Street Crime Around Leicester", - "endpoint": "https://data.police.uk/api/crimes-street/all-crime?lat=52.629729&lng=-1.131592", - "kind": "json", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-23T23:55:39.351Z", - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "daily-mail-online", - "provider": "Daily Mail Online - Popular Stories", - "endpoint": "https://www.dailymail.co.uk/home/index.rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-23T23:55:39.351Z", - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "counter-extremism-project-news", - "provider": "Counter Extremism Project a News", - "endpoint": "https://www.counterextremism.com/news-and-media", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T12:14:24.733Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "rusi-terrorism-conflict", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T12:14:24.733Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T12:14:24.733Z", - "lastFailureAt": "2026-04-20T12:14:24.733Z", - "lastCheckedAt": "2026-04-24T03:29:13.488Z" - }, - { - "id": "gov-uk-counter-extremism-commissioner", - "provider": "Counter Extremism Commissioner a GOV.UK", - "endpoint": "https://www.govwire.co.uk/rss/commission-for-countering-extremism", - "kind": "rss", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-23T19:01:30.233Z", - "lastFailureAt": "2026-04-16T19:01:30.233Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "denmark-pet-news", - "provider": "Danish Security and Intelligence Service - News", - "endpoint": "https://pet.dk/aktuelt/nyhedsliste", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "german-bfv-news", - "provider": "German BfV - Press", - "endpoint": "https://www.verfassungsschutz.de/EN/service/press/press_node.html", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nctv-english-rss", - "provider": "NCTV Netherlands - English RSS", - "endpoint": "https://english.nctv.nl/latest/news", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "belgian-federal-police-news", - "provider": "Belgian Federal Police - News", - "endpoint": "https://www.police.be/5998/en/node/10868", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T11:47:27.254Z", - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastCheckedAt": "2026-04-23T11:47:27.254Z" - }, - { - "id": "czech-police-news", - "provider": "Police of the Czech Republic - News", - "endpoint": "https://policie.gov.cz/clanek/Police-of-the-Czech-Republic.aspx", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "guardia-civil-news", - "provider": "El Pais English - Guardia Civil", - "endpoint": "https://english.elpais.com/news/guardia-civil/", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "switzerland-fedpol-news", - "provider": "Swiss fedpol - News", - "endpoint": "https://www.fedpol.admin.ch/en/newnsb", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T21:59:30.032Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T21:59:30.032Z", - "lastFailureAt": "2026-04-22T21:59:30.032Z", - "lastCheckedAt": "2026-04-22T21:59:30.032Z" - }, - { - "id": "pet-dk-english", - "provider": "PET (Denmark) a English News", - "endpoint": "https://pet.dk/en/news-and-publications/news-list", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nato-news-rss", - "provider": "NATO a News (RSS)", - "endpoint": "https://www.nato.int/en/news-and-events/articles/news", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "occrp-news", - "provider": "OCCRP a Organized Crime and Corruption Reporting Project", - "endpoint": "https://www.occrp.org/en/announcements", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "rferl-security-news-rss", - "provider": "Radio Free Europe/Radio Liberty a Security (RSS)", - "endpoint": "https://www.rferl.org/latest-news", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T08:39:19.161Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastCheckedAt": "2026-04-23T22:53:56.180Z" - }, - { - "id": "unodc-news", - "provider": "UNODC (UN Office on Drugs and Crime) a Press Releases", - "endpoint": "https://www.unodc.org/unodc/en/news/news.html", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gctf-news", - "provider": "Global Counterterrorism Forum (GCTF) a News", - "endpoint": "https://www.thegctf.org/News-Stories/PgrID/918/PageID/3", - "kind": "html", - "lane": "oversight", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "barts-health-news", - "provider": "Barts Health NHS Trust a News", - "endpoint": "https://www.bartshealth.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T08:09:12.931Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T08:09:12.931Z", - "lastFailureAt": "2026-04-23T08:09:12.931Z", - "lastCheckedAt": "2026-04-23T08:09:12.931Z" - }, - { - "id": "bromley-council-news", - "provider": "Bromley Council a Newsroom", - "endpoint": "https://www.bromley.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "homerton-healthcare-news", - "provider": "Homerton Healthcare NHS Foundation Trust a News", - "endpoint": "https://www.homerton.nhs.uk/trust-news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "mayor-of-london-press-releases", - "provider": "Mayor of London a Press Releases", - "endpoint": "https://www.london.gov.uk/rss-feeds/80610", - "kind": "rss", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "nhs-london-sel-news", - "provider": "NHS South East London a News", - "endpoint": "https://www.selondonics.org/icb/about-us/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "slam-news", - "provider": "South London and Maudsley NHS Foundation Trust a News", - "endpoint": "https://slam.nhs.uk/pressreleases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "tower-hamlets-council-news", - "provider": "Tower Hamlets Council a News", - "endpoint": "https://www.towerhamlets.gov.uk/News_events/News.aspx", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "westminster-city-council-news", - "provider": "Westminster City Council a News", - "endpoint": "https://www.westminster.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "whittington-health-news", - "provider": "Whittington Health a News", - "endpoint": "https://www.whittington.nhs.uk/mini-apps/news/news. Items.asp", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-assembly-press-releases", - "provider": "London Assembly a Press Releases", - "endpoint": "https://www.london.gov.uk/rss-feeds/80611", - "kind": "rss", - "lane": "oversight", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-defence-intelligence", - "provider": "UK Defence Intelligence a GOV.UK", - "endpoint": "https://www.gov.uk/government/groups/defence-intelligence", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "mi5-news-rss-direct", - "provider": "MI5 - News RSS", - "endpoint": "https://www.mi5.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "daily-politics", - "provider": "Daily Politics", - "endpoint": "https://www.dailypolitics.com/categories/r. RzjN-bU/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T08:39:19.161Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastCheckedAt": "2026-04-23T22:53:56.180Z" - }, - { - "id": "joint-committee-human-rights-html", - "provider": "Joint Committee on Human Rights", - "endpoint": "https://committees.parliament.uk/committee/93/human-rights-joint-committee/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T19:31:23.009Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T19:31:23.009Z", - "lastFailureAt": "2026-04-23T19:31:23.009Z", - "lastCheckedAt": "2026-04-23T19:31:23.009Z" - }, - { - "id": "scottish-government-justice-news", - "provider": "Scottish Government - Justice and Safety", - "endpoint": "https://www.gov.scot/policies/community-safety/latest/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dni-press-releases", - "provider": "Office of the Director of National Intelligence - Press Releases", - "endpoint": "https://www.dni.gov/index.php/who-we-are/348-newsroom/press-releases", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "doj-nsd-press-releases", - "provider": "U.S. Department of Justice - National Security Division Press Releases", - "endpoint": "https://www.justice.gov/nsd/press-room", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "us-treasury-ofac-press-releases", - "provider": "U.S. Treasury (OFAC) - Press Releases", - "endpoint": "https://ofac.treasury.gov/press-releases", - "kind": "html", - "lane": "sanctions", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-23T15:11:26.228Z", - "lastFailureAt": "2026-04-16T15:11:26.228Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "bbc-news-england-legacy", - "provider": "BBC News a England (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/england/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 3, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "aljazeera-news-rss", - "provider": "Al Jazeera English a Top Stories (RSS)", - "endpoint": "https://www.aljazeera.com/xml/rss/all.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 3, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "rte-ireland-news-rss", - "provider": "RTE News - Ireland (RSS)", - "endpoint": "https://feeds.feedburner.com/ietopstories", - "kind": "rss", - "lane": "context", - "region": "europe", - "healthScore": 5, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T08:39:19.161Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "channel-4-news", - "provider": "Channel 4 News", - "endpoint": "https://www.channel4.com/news/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 10, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T00:08:15.005Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T03:57:52.244Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "england-naturally", - "provider": "England, Naturally", - "endpoint": "https://englandnaturally.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 11, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-23T03:28:47.210Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "love-my-dress", - "provider": "Love My Dress", - "endpoint": "https://www.lovemydress.net/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 11, - "status": "auto-quarantined", - "reason": "Health score degraded to 14 after repeated failures", - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 520", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "the-week-uk", - "provider": "The Week UK", - "endpoint": "https://www.theweek.co.uk/feeds/all", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 13, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T08:39:19.161Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "euiss-home", - "provider": "EU Institute for Security Studies", - "endpoint": "https://www.iss.europa.eu/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "icct-home", - "provider": "ICCT - Home", - "endpoint": "https://icct.nl/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "breakingnews-ie", - "provider": "Breaking. News.ie", - "endpoint": "https://feeds.breakingnews.ie/bntopstories", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "independent-ie", - "provider": "Independent.ie", - "endpoint": "https://www.independent.ie/rss/", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "eucrim-counter-terrorism-agenda", - "provider": "eucrim - Commission Counter Terrorism Agenda", - "endpoint": "https://eucrim.eu/news/commission-counter-terrorism-agenda/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "eucrim-judicial-counter-terrorism-register", - "provider": "eucrim - Judicial Counter Terrorism Register", - "endpoint": "https://eucrim.eu/news/judicial-counter-terrorism-register/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "icct-perspectives-on-terrorism", - "provider": "Perspectives on Terrorism (ICCT) a Journal", - "endpoint": "https://pt.icct.nl/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "icct-publications", - "provider": "International Centre for Counter-Terrorism (ICCT) - Publications", - "endpoint": "https://icct.nl/publications", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "vox-pol-publications", - "provider": "VOX-Pol Network a Publications", - "endpoint": "https://www.voxpol.eu/publications/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "isd-global", - "provider": "Institute for Strategic Dialogue (ISD) a Articles & Reports", - "endpoint": "https://www.isdglobal.org/", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bbc-news-world", - "provider": "BBC News a World", - "endpoint": "https://feeds.bbci.co.uk/news/world/rss.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bbc-news-world-legacy", - "provider": "BBC News a World (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/world/rss.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bellingcat", - "provider": "Bellingcat a Investigations", - "endpoint": "https://www.bellingcat.com/feed/", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "chathamhouse-events", - "provider": "Chatham House a Events (RSS)", - "endpoint": "https://www.chathamhouse.org/path/events.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "chathamhouse-news-releases", - "provider": "Chatham House a News Releases (RSS)", - "endpoint": "https://www.chathamhouse.org/path/news-releases.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "global-initiative-news", - "provider": "Global Initiative Against Transnational Organized Crime a News", - "endpoint": "https://globalinitiative.net/news/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "tech-against-terrorism-podcast", - "provider": "Tech Against Terrorism - Podcast", - "endpoint": "https://podcast.techagainstterrorism.org/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "war-on-the-rocks", - "provider": "War on the Rocks a National Security & CT Analysis", - "endpoint": "https://warontherocks.com/feed/", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "tech-against-terrorism", - "provider": "Tech Against Terrorism a Blog", - "endpoint": "https://techagainstterrorism.org/", - "kind": "html", - "lane": "prevention", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "tech-against-terrorism-home", - "provider": "Tech Against Terrorism - Home", - "endpoint": "https://techagainstterrorism.org/home", - "kind": "html", - "lane": "prevention", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "hope-not-hate-home", - "provider": "Hope not hate podcast", - "endpoint": "https://feeds.buzzsprout.com/170425.rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "rusi-publications", - "provider": "RUSI (Royal United Services Institute) a Publications", - "endpoint": "https://www.rusi.org/publications", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "birmingham-mail", - "provider": "Birmingham Mail", - "endpoint": "https://www.birminghammail.co.uk/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "breaking-news-today", - "provider": "Breaking News Today", - "endpoint": "https://www.breakingnewstoday.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "consett-magazine", - "provider": "Consett Magazine", - "endpoint": "https://consettmagazine.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "daily-echo", - "provider": "Daily Echo", - "endpoint": "https://www.dailyecho.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "daily-express", - "provider": "Daily Express", - "endpoint": "https://feeds.feedburner.com/daily-express-news-showbiz", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "daily-mirror", - "provider": "Daily Mirror", - "endpoint": "https://www.mirror.co.uk/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "glasgow-times", - "provider": "Glasgow Times", - "endpoint": "https://www.glasgowtimes.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "grimsby-telegraph", - "provider": "Grimsby Telegraph", - "endpoint": "https://www.grimsbytelegraph.co.uk/news/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "herald-scotland-news", - "provider": "Herald Scotland - News", - "endpoint": "https://www.heraldscotland.com/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "huffpost-uk", - "provider": "Huff. Post UK", - "endpoint": "https://www.huffingtonpost.co.uk/feeds/index.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "larne-times", - "provider": "Larne Times", - "endpoint": "https://www.larnetimes.co.uk/news/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "manchester-evening-news", - "provider": "Manchester Evening News", - "endpoint": "https://www.manchestereveningnews.co.uk/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "news-uk", - "provider": "News UK", - "endpoint": "https://www.news.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "politics-co-uk", - "provider": "Politics.co.uk", - "endpoint": "https://www.politics.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "positive-news", - "provider": "Positive News", - "endpoint": "https://www.positive.news/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "scottish-field", - "provider": "Scottish Field", - "endpoint": "https://www.scottishfield.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-argus-news", - "provider": "The Argus", - "endpoint": "https://www.theargus.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-bolton-news", - "provider": "The Bolton News - News", - "endpoint": "https://www.theboltonnews.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "daily-record", - "provider": "Daily Record", - "endpoint": "https://www.dailyrecord.co.uk/news/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "northern-echo-news", - "provider": "The Northern Echo - News", - "endpoint": "https://www.thenorthernecho.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-poke", - "provider": "The Poke", - "endpoint": "https://www.thepoke.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "scarborough-news", - "provider": "The Scarborough News", - "endpoint": "https://www.thescarboroughnews.co.uk/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-scotsman-news", - "provider": "The Scotsman - News", - "endpoint": "https://www.scotsman.com/news/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-york-press-news", - "provider": "The York Press - News", - "endpoint": "https://www.yorkpress.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "wales-online", - "provider": "Wales. Online", - "endpoint": "https://www.walesonline.co.uk/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "a-luxury-travel-blog", - "provider": "A Luxury Travel Blog", - "endpoint": "https://www.aluxurytravelblog.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "age-uk-discover", - "provider": "Age UK", - "endpoint": "https://www.ageuk.org.uk/discover/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "alan-malcher", - "provider": "Alan Malcher", - "endpoint": "https://alanmalcher.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "britishbeautyblogger", - "provider": "British Beauty Blogger", - "endpoint": "https://britishbeautyblogger.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "buy-firewood-direct", - "provider": "Buy Firewood Direct", - "endpoint": "https://www.buyfirewooddirect.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "carly-rowena", - "provider": "Carly Rowena", - "endpoint": "https://feeds.feedburner.com/Carly. Rowena. Official", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "cherished-holiday-homes", - "provider": "Cherished Holiday Homes", - "endpoint": "https://cherishedholidayhomes.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "chique-home-living", - "provider": "Chique Home Living", - "endpoint": "https://chiquehomeliving.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "clubwise-blog", - "provider": "Club. Wise Blog", - "endpoint": "https://www.clubwise.com/clubwise-blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "disneyrollergirl", - "provider": "Disneyrollergirl", - "endpoint": "https://www.disneyrollergirl.net/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "fresh-design-blog", - "provider": "Fresh Design Blog", - "endpoint": "https://feeds2.feedburner.com/Fresh. Design. Blog", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "jollydeck", - "provider": "Jolly. Deck", - "endpoint": "https://www.jollydeck.com/resources/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "lifestylelinked", - "provider": "Life. Style. Linked", - "endpoint": "https://lifestylelinked.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "london-review-of-books", - "provider": "London Review of Books", - "endpoint": "https://www.lrb.co.uk/blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "marie-claire-uk", - "provider": "Marie Claire UK", - "endpoint": "https://www.marieclaire.co.uk/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "office-breaks", - "provider": "Office Breaks", - "endpoint": "https://office-breaks.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "on-the-think-of", - "provider": "On The Think Of", - "endpoint": "https://onthethinkof.home.blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "rocknroll-bride", - "provider": "Rock n Roll Bride", - "endpoint": "https://www.rocknrollbride.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "silverspoon-london", - "provider": "Silver. Spoon London", - "endpoint": "https://www.silverspoonlondon.co.uk/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "hnd-assignment-help-uk-medium", - "provider": "Stories by HND Assignment Help UK", - "endpoint": "https://medium.com/feed/@hndassigenmenthelp", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "tenura", - "provider": "Tenura", - "endpoint": "https://www.tenura.co.uk/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-curry-guy", - "provider": "The Curry Guy", - "endpoint": "https://greatcurryrecipes.net/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "real-talk-uk", - "provider": "The Real Talk UK", - "endpoint": "https://charleyjai-realtalk.blogspot.com/feeds/posts/default?alt=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-stratfordian", - "provider": "The Stratfordian", - "endpoint": "https://thestratfordian.co.uk/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "training-express", - "provider": "Training Express", - "endpoint": "https://www.trainingexpress.org.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "uk-constitutional-law-association", - "provider": "UK Constitutional Law Association", - "endpoint": "https://ukconstitutionallaw.org/blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "uk-fundraising-blog", - "provider": "UK Fundraising", - "endpoint": "https://fundraising.co.uk/category/blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "uk-human-rights-blog", - "provider": "UK Human Rights Blog", - "endpoint": "https://ukhumanrightsblog.com/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "vershd", - "provider": "Vershd", - "endpoint": "https://vershd.io/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "vuelio-uk", - "provider": "Vuelio", - "endpoint": "https://www.vuelio.com/uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "ctc-sentinel", - "provider": "Combating Terrorism Center at West Point - CTC Sentinel", - "endpoint": "https://ctc.westpoint.edu/ctc-sentinel/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "gw-program-extremism", - "provider": "George Washington University - Program on Extremism", - "endpoint": "https://extremism.gwu.edu/news", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "telegraph-world-news", - "provider": "The Telegraph a World News", - "endpoint": "https://www.telegraph.co.uk/world-news/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 23, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T14:11:10.963Z", - "lastFailureAt": "2026-04-19T14:11:10.963Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "euronews-europe", - "provider": "Euronews a Europe", - "endpoint": "https://www.euronews.com/news/europe", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 24, - "status": "auto-quarantined", - "reason": "Health score degraded to 24 after repeated failures", - "quarantinedAt": "2026-04-23T03:28:47.210Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 406", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 406", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - } - ] + "sources": [] } diff --git a/data/source-remediation-sweep.json b/data/source-remediation-sweep.json index d408b774..412ecfcb 100644 --- a/data/source-remediation-sweep.json +++ b/data/source-remediation-sweep.json @@ -1,120 +1,11 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T08:17:25.806Z", - "totalSourceErrors": 3, - "byCategory": { - "moved-temporarily": 2, - "timeout": 1 - }, - "byKind": { - "html": 3 - }, + "generatedAt": "2026-04-24T15:22:20.804Z", + "totalSourceErrors": 0, + "byCategory": {}, + "byKind": {}, "machineReadableErrorCount": 0, - "htmlErrorCount": 3, - "top20": [ - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "finalUrl": "", - "category": "timeout", - "statusKind": "", - "message": "This operation was aborted", - "status": 0, - "rankScore": 1, - "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", - "replacementCandidate": "", - "sourceKind": "html", - "sourceLane": "oversight", - "sourceRegion": "", - "isMachineReadable": false - } - ], - "sources": [ - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "finalUrl": "", - "category": "timeout", - "statusKind": "", - "message": "This operation was aborted", - "status": 0, - "rankScore": 1, - "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", - "replacementCandidate": "", - "sourceKind": "html", - "sourceLane": "oversight", - "sourceRegion": "", - "isMachineReadable": false - } - ] + "htmlErrorCount": 0, + "top20": [], + "sources": [] } diff --git a/data/top-20-source-remediation.json b/data/top-20-source-remediation.json index 7358ed1a..b277b05c 100644 --- a/data/top-20-source-remediation.json +++ b/data/top-20-source-remediation.json @@ -1,58 +1,6 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T08:17:25.806Z", - "totalSourceErrors": 3, - "top20": [ - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "finalUrl": "", - "category": "timeout", - "statusKind": "", - "message": "This operation was aborted", - "status": 0, - "rankScore": 1, - "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", - "replacementCandidate": "", - "sourceKind": "html", - "sourceLane": "oversight", - "sourceRegion": "", - "isMachineReadable": false - } - ] + "generatedAt": "2026-04-24T15:22:20.804Z", + "totalSourceErrors": 0, + "top20": [] } diff --git a/live-alerts.json b/live-alerts.json index d9e74c19..cafb4ce2 100644 --- a/live-alerts.json +++ b/live-alerts.json @@ -1,7 +1,7 @@ { - "generatedAt": "2026-04-24T08:17:25.806Z", - "sourceCount": 176, - "alertCount": 179, + "generatedAt": "2026-04-24T15:22:20.804Z", + "sourceCount": 4, + "alertCount": 181, "alerts": [ { "id": "met-police-latest-news-0", @@ -10245,6 +10245,56 @@ "corroborationCount": 1, "isDuplicateOf": "fusion-f289bcaeba8fd554" }, + { + "id": "fixture-atom-oversight-0", + "fusedIncidentId": "fusion-b4a9eb5890206d91", + "title": "Oversight Committee Schedules Counter-Terror Review Hearing", + "location": "Europe", + "region": "europe", + "lane": "oversight", + "severity": "moderate", + "status": "Update", + "actor": "Fixture Oversight Feed", + "subject": "Fixture Oversight Feed", + "happenedWhen": "04 Apr 2026, 11:10", + "confidence": "Verified official source update", + "confidenceScore": 0.84, + "summary": "Parliamentary committee confirms an oversight hearing on prevention strategy.", + "aiSummary": "Fixture Oversight Feed has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", + "sourceExtract": "Parliamentary committee confirms an oversight hearing on prevention strategy.", + "peopleInvolved": [], + "source": "Fixture Oversight Feed", + "sourceUrl": "https://fixtures.albertalert.local/oversight/1", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "incidentTrack": "", + "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueBucket": "oversight", + "time": "04 Apr 2026, 11:10", + "lat": 50, + "lng": 10, + "major": false, + "publishedAt": "2026-04-04T10:10:00.000Z", + "keywordHits": [ + "terror" + ], + "terrorismHits": [ + "terror", + "counter-terror" + ], + "eventType": "oversight_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": -5.8, + "freshnessBucket": 0, + "freshUntil": "2026-04-12T10:10:00.000Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null + }, { "id": "uk-ncsc-news-4", "fusedIncidentId": "fusion-a4c8d412564d7890", @@ -10526,40 +10576,54 @@ ], "corroborationCount": 1, "isDuplicateOf": "fusion-a705408939c4c725" + }, + { + "id": "fixture-json-prevention-0", + "fusedIncidentId": "fusion-f5cb7bfa16235fcf", + "title": "Community Prevention Workshop Expanded Across Regions", + "location": "Europe", + "region": "international", + "lane": "prevention", + "severity": "moderate", + "status": "Update", + "actor": "Fixture Prevention Feed", + "subject": "Fixture Prevention Feed", + "happenedWhen": "04 Apr 2026, 10:30", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "Prevention specialists announced a new training cycle focused on reporting suspicious behavior.", + "aiSummary": "Fixture Prevention Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "Prevention specialists announced a new training cycle focused on reporting suspicious behavior.", + "peopleInvolved": [], + "source": "Fixture Prevention Feed", + "sourceUrl": "https://fixtures.albertalert.local/prevention/1", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "incidentTrack": "", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "queueBucket": "prevention", + "time": "04 Apr 2026, 10:30", + "lat": 50, + "lng": 10, + "major": false, + "publishedAt": "2026-04-04T09:30:00.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "prevention_update", + "geoPrecision": "country", + "isOfficial": false, + "priorityScore": -8.3, + "freshnessBucket": 0, + "freshUntil": "2026-04-12T09:30:00.000Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null } ], - "sourceErrors": [ - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "status": 503, - "message": "HTTP 503", - "errorCode": "HTTP_STATUS_ERROR", - "category": "http-status-error" - }, - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "status": 503, - "message": "HTTP 503", - "errorCode": "HTTP_STATUS_ERROR", - "category": "http-status-error" - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "finalUrl": "", - "status": null, - "message": "This operation was aborted", - "errorCode": "FETCH_TIMEOUT", - "category": "timeout" - } - ], + "sourceErrors": [], "restoreAudit": null, "geoLookupSnapshot": [ { @@ -12403,87 +12467,44 @@ "lng": 133.7751 } ], - "buildWarning": "Deferred 368 low-yield source(s) on health cooldown. | Guardrails breached: successful-source-floor-breached (runtime=283557ms, failedRate=0.017, successfulSources=7)", + "buildWarning": null, "runMetrics": { "schedulerMode": "candidate", "htmlBudget": 40, "htmlDomainCapPerRun": 3, - "htmlDomainUsage": { - "news.met.police.uk": 2, - "www.avonandsomerset.police.uk": 2, - "www.scotland.police.uk": 1, - "www.psni.police.uk": 1, - "www.westyorkshirepolice.co.uk": 1, - "policie.gov.cz": 1, - "www.politie.nl": 2, - "mossos.gencat.cat": 1, - "www.policia.es": 1, - "www.policiajudiciaria.pt": 1, - "news.camden.gov.uk": 1, - "www.chelwest.nhs.uk": 1, - "www.hounslow.gov.uk": 1, - "www.merton.gov.uk": 1, - "northeastlondon.icb.nhs.uk": 1, - "www.walthamforest.gov.uk": 1, - "www.gov.uk": 3, - "www.mi5.gov.uk": 1, - "community-messaging.dc.police.uk": 1, - "www.bmi.gv.at": 1, - "www.unodc.org": 1, - "www.hillingdon.gov.uk": 1, - "www.homerton.nhs.uk": 1, - "www.kch.nhs.uk": 1, - "www.swlstg.nhs.uk": 1, - "news.npcc.police.uk": 1, - "www.ipco.org.uk": 1, - "hmiprobation.justiceinspectorates.gov.uk": 1, - "www.gov.scot": 1, - "www.dhs.gov": 1, - "www.state.gov": 1, - "ofac.treasury.gov": 1, - "www.verfassungsschutz.de": 1, - "www.interpol.int": 1, - "www.bexley.gov.uk": 1 - }, + "htmlDomainUsage": {}, "coverage": { - "eligible": 547, - "scheduled": 179, - "initialScheduled": 98, - "continuationAttempted": 81, - "checked": 176, - "eligibleCheckedRate": 0.322, - "scheduledCheckedRate": 0.983 + "eligible": 4, + "scheduled": 4, + "initialScheduled": 1, + "continuationAttempted": 3, + "checked": 4, + "eligibleCheckedRate": 1, + "scheduledCheckedRate": 1 }, "freshnessSlaByTier": { "high": { - "count": 7, - "avgMinutes": 5062, - "p95Minutes": 11000 - }, - "low": { - "count": 12, - "avgMinutes": 6733, - "p95Minutes": 9727 + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 }, "medium": { - "count": 20, - "avgMinutes": 4992, - "p95Minutes": 11000 + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 } }, "failureReasons": { - "success": 7, - "unchanged": 4, - "timeout-or-aborted": 4 + "success": 2 }, "sourceRunStats": { - "totalConfiguredSources": 549, - "sourcesCheckedThisRun": 179, - "sourcesUpdatedThisRun": 7, - "sourcesFailedThisRun": 3, - "sourcesUnchangedThisRun": 4 + "totalConfiguredSources": 4, + "sourcesCheckedThisRun": 4, + "sourcesUpdatedThisRun": 2, + "sourcesFailedThisRun": 0, + "sourcesUnchangedThisRun": 0 }, - "runDurationMs": 283557, + "runDurationMs": 202, "playwrightFallback": { "attempts": 0, "successes": 0, @@ -12493,21 +12514,19 @@ "guardrails": { "maxRuntimeMs": 720000, "maxFailedSourceRate": 0.65, - "minSuccessfulSources": 8, - "targetSuccessfulSourcesPerRun": 60, - "failedSourceRate": 0.017, - "successfulSources": 7, - "violations": [ - "successful-source-floor-breached" - ], + "minSuccessfulSources": 1, + "targetSuccessfulSourcesPerRun": 1, + "failedSourceRate": 0, + "successfulSources": 2, + "violations": [], "midRun": { "throttleLevel": 0, - "totalAttempted": 179, - "totalFailed": 3, - "totalSuccessful": 7, - "failedRate": 0.017, - "successRate": 0.039, - "avgSourceDurationMs": 1584, + "totalAttempted": 4, + "totalFailed": 0, + "totalSuccessful": 2, + "failedRate": 0, + "successRate": 0.5, + "avgSourceDurationMs": 46, "criticalOnly": false, "skipPlaywright": false, "transitions": [] @@ -12517,22536 +12536,187 @@ "health": { "expectedRefreshMinutes": 30, "staleAfterMinutes": 50, - "lastAttemptedRefreshTime": "2026-04-24T08:17:25.806Z", + "lastAttemptedRefreshTime": "2026-04-24T15:22:20.804Z", "usedFallback": false, - "lastSuccessfulRefreshTime": "2026-04-24T08:17:25.806Z", - "lastSuccessfulRunId": "24879386517", - "lastSuccessfulRunNumber": "510", + "lastSuccessfulRefreshTime": "2026-04-24T15:22:20.804Z", + "lastSuccessfulRunId": "24897241588", + "lastSuccessfulRunNumber": "369", "lastSuccessfulRunAttempt": "1", - "lastSuccessfulHeadSha": "4b91e9681a86e06ecb9443c627b7b278419b21ca", - "lastSuccessfulEvent": "schedule", - "lastSuccessfulSourceCount": 176, - "sourceErrorCount": 3, - "hasWarnings": true, - "autoDeferredSourceCount": 368, - "autoDeferredSources": [ - { - "id": "frontex-news-releases", - "provider": "Frontex a News Releases", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "bdk-rss", - "provider": "Bund Deutscher Kriminalbeamter - RSS", - "reason": "health-deprioritised", - "until": "2026-04-25T14:03:06.243Z", - "statusKind": "cooled_down" - }, - { - "id": "belgium-crisis-centre-news", - "provider": "Belgian National Crisis Centre - Newsroom", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "denmark-pet-news", - "provider": "Danish Security and Intelligence Service - News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "ecfr-feeds-index", - "provider": "ECFR - Feeds", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "enisa-news", - "provider": "ENISA (EU Cybersecurity Agency) a News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "enisa-rss-transition-page", - "provider": "ENISA - RSS Feeds Transition Notice", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "euiss-home", - "provider": "EU Institute for Security Studies", - "reason": "health-deprioritised", - "until": "2026-04-24T18:01:25.327Z", - "statusKind": "cooled_down" - }, - { - "id": "euractiv-security-rss", - "provider": "BBC News - Europe", - "reason": "health-deprioritised", - "until": "2026-04-25T14:03:06.243Z", - "statusKind": "cooled_down" - }, - { - "id": "eurojust-press-news-html", - "provider": "Eurojust - Press Releases and News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "eurojust-press-releases", - "provider": "Eurojust - Press Releases", - "reason": "health-deprioritised", - "until": "2026-04-25T18:02:43.923Z", - "statusKind": "cooled_down" - }, - { - "id": "europol-media-press", - "provider": "Europol a Media and Press", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "europol-newsroom-html", - "provider": "Europol - Newsroom", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "finland-supo-news", - "provider": "Finnish Security Intelligence Service - News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "german-bfv-news", - "provider": "German BfV - Press", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "german-interior-ministry-press", - "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", - "reason": "health-deprioritised", - "until": "2026-04-25T10:13:21.253Z", - "statusKind": "cooled_down" - }, - { - "id": "icct-home", - "provider": "ICCT - Home", - "reason": "health-deprioritised", - "until": "2026-04-24T18:01:25.327Z", - "statusKind": "cooled_down" - }, - { - "id": "nctv-english-rss", - "provider": "NCTV Netherlands - English RSS", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "paris-prefecture-police-rss-page", - "provider": "Paris Prefecture of Police - RSS", - "reason": "health-deprioritised", - "until": "2026-04-25T10:13:21.253Z", - "statusKind": "cooled_down" - }, - { - "id": "spain-interior-ministry-news", - "provider": "Spanish Ministry of the Interior - Press", - "reason": "health-deprioritised", - "until": "2026-04-25T10:13:21.253Z", - "statusKind": "cooled_down" - }, - { - "id": "statewatch-news", - "provider": "Statewatch - News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "breakingnews-ie", - "provider": "BreakingNews.ie", - "reason": "health-deprioritised", - "until": "2026-04-24T18:01:25.327Z", - "statusKind": "cooled_down" - }, - { - "id": "independent-ie", - "provider": "Independent.ie", - "reason": "health-deprioritised", - "until": "2026-04-24T18:01:25.327Z", - "statusKind": "cooled_down" - }, - { - "id": "belgian-federal-police-news", - "provider": "Belgian Federal Police - News", - "reason": "health-deprioritised", - "until": "2026-04-25T11:47:27.254Z", - "statusKind": "cooled_down" - }, - { - "id": "ertzaintza-news", - "provider": "Ertzaintza - News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - } - ], + "lastSuccessfulHeadSha": "17cd1b3dbc94dbd11a38e97b6ac0cb1f8332b0ff", + "lastSuccessfulEvent": "dynamic", + "lastSuccessfulSourceCount": 4, + "sourceErrorCount": 0, + "hasWarnings": false, + "autoDeferredSourceCount": 0, + "autoDeferredSources": [], "operationalDeferredSourceCount": 0, "operationalDeferredSources": [], "sourceRunStats": { - "totalConfiguredSources": 549, - "sourcesCheckedThisRun": 179, - "sourcesUpdatedThisRun": 7, - "sourcesFailedThisRun": 3, - "sourcesUnchangedThisRun": 4 + "totalConfiguredSources": 4, + "sourcesCheckedThisRun": 4, + "sourcesUpdatedThisRun": 2, + "sourcesFailedThisRun": 0, + "sourcesUnchangedThisRun": 0 }, "extraMetrics": { "schedulerMode": "candidate", "coverage": { - "eligible": 547, - "scheduled": 179, - "initialScheduled": 98, - "continuationAttempted": 81, - "checked": 176, - "eligibleCheckedRate": 0.322, - "scheduledCheckedRate": 0.983 + "eligible": 4, + "scheduled": 4, + "initialScheduled": 1, + "continuationAttempted": 3, + "checked": 4, + "eligibleCheckedRate": 1, + "scheduledCheckedRate": 1 }, "freshnessSlaByTier": { "high": { - "count": 7, - "avgMinutes": 5062, - "p95Minutes": 11000 - }, - "low": { - "count": 12, - "avgMinutes": 6733, - "p95Minutes": 9727 + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 }, "medium": { - "count": 20, - "avgMinutes": 4992, - "p95Minutes": 11000 + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 } }, "failureReasons": { - "success": 7, - "unchanged": 4, - "timeout-or-aborted": 4 + "success": 2 }, "sourceRunStats": { - "totalConfiguredSources": 549, - "sourcesCheckedThisRun": 179, - "sourcesUpdatedThisRun": 7, - "sourcesFailedThisRun": 3, - "sourcesUnchangedThisRun": 4 + "totalConfiguredSources": 4, + "sourcesCheckedThisRun": 4, + "sourcesUpdatedThisRun": 2, + "sourcesFailedThisRun": 0, + "sourcesUnchangedThisRun": 0 }, "playwrightFallback": { "attempts": 0, "successes": 0 }, - "guardrailViolations": [ - "successful-source-floor-breached" - ], + "guardrailViolations": [], "midRunGuardrail": { "throttleLevel": 0, - "totalAttempted": 179, - "totalFailed": 3, - "totalSuccessful": 7, - "failedRate": 0.017, - "successRate": 0.039, - "avgSourceDurationMs": 1584, + "totalAttempted": 4, + "totalFailed": 0, + "totalSuccessful": 2, + "failedRate": 0, + "successRate": 0.5, + "avgSourceDurationMs": 46, "criticalOnly": false, "skipPlaywright": false, "transitions": [] } }, "sourceHealth": { - "euaa-news": { - "provider": "EUAA (EU Agency for Asylum) - Press Releases", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "fixture-rss-incidents": { + "provider": "Fixture Incidents Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:22:20.804Z", "lastBuiltCount": 0, "successfulRuns": 0, - "emptyRuns": 80, + "emptyRuns": 1, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, + "consecutiveEmptyRuns": 1, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": "2026-04-24T15:22:20.804Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, + "healthScore": 77, + "quarantined": false, "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" + "quarantineReason": null, + "nextFetchAt": "2026-04-24T16:19:20.804Z" }, - "eulisa-news-events": { - "provider": "eu-LISA - News and Events (RSS)", - "lane": "border", + "fixture-rss-context": { + "provider": "Fixture Context Feed", + "lane": "context", "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastCheckedAt": "2026-04-24T15:22:20.804Z", "lastBuiltCount": 0, "successfulRuns": 0, - "emptyRuns": 80, + "emptyRuns": 1, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, + "consecutiveEmptyRuns": 1, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": "2026-04-24T15:22:20.804Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "frontex-news-releases": { - "provider": "Frontex a News Releases", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "austria-interior-ministry-news": { - "provider": "Austrian Interior Ministry - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "cooldownUntil": "2026-04-26T08:17:25.806Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T08:17:25.806Z" - }, - "austria-interior-ministry-rss-index": { - "provider": "Austrian Interior Ministry - RSS Index", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "cooldownUntil": "2026-04-26T08:17:25.806Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, + "healthScore": 77, + "quarantined": false, "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T08:17:25.806Z" - }, - "bdk-rss": { - "provider": "Bund Deutscher Kriminalbeamter - RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "belgium-crisis-centre-news": { - "provider": "Belgian National Crisis Centre - Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "quarantineReason": "Health score degraded to 5 after repeated failures", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "denmark-pet-news": { - "provider": "Danish Security and Intelligence Service - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ecfr-feeds-index": { - "provider": "ECFR - Feeds", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "enisa-news": { - "provider": "ENISA (EU Cybersecurity Agency) a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" + "quarantineReason": null, + "nextFetchAt": "2026-04-24T17:59:20.804Z" }, - "enisa-rss-transition-page": { - "provider": "ENISA - RSS Feeds Transition Notice", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, + "fixture-atom-oversight": { + "provider": "Fixture Oversight Feed", + "lane": "oversight", + "kind": "atom", + "lastCheckedAt": "2026-04-24T15:22:20.804Z", + "lastBuiltCount": 1, + "successfulRuns": 1, "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "euiss-home": { - "provider": "EU Institute for Security Studies", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, + "consecutiveEmptyRuns": 0, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, + "lastSuccessfulAt": "2026-04-24T15:22:20.804Z", "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastEmptyAt": null, "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "euractiv-security-rss": { - "provider": "BBC News - Europe", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eurojust-press-news-html": { - "provider": "Eurojust - Press Releases and News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eurojust-press-releases": { - "provider": "Eurojust - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 72, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T16:07:40.227Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 90, + "quarantined": false, "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" + "quarantineReason": null, + "nextFetchAt": "2026-04-24T16:00:20.804Z" }, - "europol-media-press": { - "provider": "Europol a Media and Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, + "fixture-json-prevention": { + "provider": "Fixture Prevention Feed", + "lane": "prevention", + "kind": "json", + "lastCheckedAt": "2026-04-24T15:22:20.804Z", + "lastBuiltCount": 1, + "successfulRuns": 1, "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "europol-news-rss": { - "provider": "Europol - Newsroom (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, + "consecutiveEmptyRuns": 0, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, + "lastSuccessfulAt": "2026-04-24T15:22:20.804Z", "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": null, "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "europol-newsroom-html": { - "provider": "Europol - Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "finland-supo-news": { - "provider": "Finnish Security Intelligence Service - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "german-bfv-news": { - "provider": "German BfV - Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "german-interior-ministry-press": { - "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 400", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Health score degraded to 20 after repeated failures", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "icct-home": { - "provider": "ICCT - Home", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nctv-english-rss": { - "provider": "NCTV Netherlands - English RSS", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "paris-prefecture-police-rss-page": { - "provider": "Paris Prefecture of Police - RSS", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "spain-interior-ministry-news": { - "provider": "Spanish Ministry of the Interior - Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "statewatch-news": { - "provider": "Statewatch - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "breakingnews-ie": { - "provider": "BreakingNews.ie", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "independent-ie": { - "provider": "Independent.ie", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "belgian-federal-police-news": { - "provider": "Belgian Federal Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T11:47:27.254Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastEmptyAt": "2026-04-23T10:13:21.253Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "cooldownUntil": "2026-04-25T11:47:27.254Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-25T11:47:27.254Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "czech-police-news": { - "provider": "Police of the Czech Republic - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "dutch-police-rss-index": { - "provider": "Politie.nl - RSS", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ertzaintza-news": { - "provider": "Ertzaintza - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "finland-police-news": { - "provider": "Finnish Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "german-bka-press": { - "provider": "German BKA - Press Releases (2026 archive)", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "quarantineReason": "Health score degraded to 5 after repeated failures", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "german-bka-press-releases-de": { - "provider": "BKA Germany - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T17:39:27.641Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 15, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastEmptyAt": "2026-04-22T16:17:11.443Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T07:32:24.475Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "cooldownUntil": "2026-04-24T17:39:27.641Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T08:04:04.612Z", - "quarantineReason": "Infrastructure instability — mixed timeout and network errors; auto-retry likely to recover", - "nextFetchAt": "2026-04-24T17:39:27.641Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "guardia-civil-news": { - "provider": "El Pais English - Guardia Civil", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "mossos-news": { - "provider": "Mossos d'Esquadra - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "paris-prefecture-police-press-releases": { - "provider": "Paris Prefecture of Police - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "policia-nacional-news": { - "provider": "Policia Nacional - Press", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T18:05:04.781Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-19T18:05:04.781Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "quarantineReason": "Health score degraded to 5 after repeated failures", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "romanian-police-news": { - "provider": "Romanian Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "curia-press-rss-en": { - "provider": "Court of Justice of the European Union - RSS (EN/FR)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 65, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eppo-news-node-7": { - "provider": "European Public Prosecutor's Office - News (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-cellar-rss-atom": { - "provider": "Publications Office of the European Union (CELLAR) a RSS/Atom Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 61, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-commission-counter-terrorism-measures-2026": { - "provider": "European Commission - Counter Terrorism Measures 2026", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-commission-home-affairs-topic": { - "provider": "European Commission - Home Affairs", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-commission-presscorner-home": { - "provider": "Council of the EU - Press Releases (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-council-fight-against-terrorism": { - "provider": "Council of the EU - Fight Against Terrorism", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-council-jha-meetings": { - "provider": "Council of the EU - JHA Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 72, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T16:07:40.227Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-council-jha-register-rss": { - "provider": "Council of the EU - Latest Documents RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-council-press-releases": { - "provider": "Council of the European Union a Press Releases (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-council-press-releases-html": { - "provider": "Council of the EU - Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-council-rss-index": { - "provider": "Council of the EU - RSS Index", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-ct-coordinator": { - "provider": "EU Counter-Terrorism Coordinator a Council of the EU", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-ejustice-news-rss": { - "provider": "European e-Justice - News RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 57, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 34, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T13:27:18.679Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-18T13:27:18.679Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-eppo-news": { - "provider": "European Public Prosecutor's Office - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-fra-rss": { - "provider": "EU Agency for Fundamental Rights (FRA) a RSS", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-21T11:46:02.615Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-home-affairs-news": { - "provider": "European Commission a Home Affairs News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-olaf-news": { - "provider": "OLAF (EU Anti-Fraud Office) a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-security-union-strategy": { - "provider": "European Commission a Security Union Strategy", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eucrim-counter-terrorism-agenda": { - "provider": "eucrim - Commission Counter Terrorism Agenda", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eucrim-judicial-counter-terrorism-register": { - "provider": "eucrim - Judicial Counter Terrorism Register", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eurojust-publications": { - "provider": "Eurojust a Publications (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 105, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eurojust-rss-feeds-page": { - "provider": "Eurojust - RSS Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "europarl-committee-libe": { - "provider": "European Parliament - LIBE Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "europarl-committee-sede": { - "provider": "European Parliament - SEDE Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "europarl-pressreleases-committees": { - "provider": "European Parliament a Press Releases (Committees) (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "europol-tesat-report": { - "provider": "Europol - TESAT Report", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fra-rss": { - "provider": "Human Rights Watch - News RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "europol-eu-iru": { - "provider": "Europol a EU Internet Referral Unit (EU IRU)", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "isd-global-publications": { - "provider": "ISD - Publications", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ncsc-nl-rss": { - "provider": "NCSC Netherlands - RSS", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-council-terrorism-sanctions": { - "provider": "Council of the EU - Sanctions Against Terrorism", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unhcr-europe-news": { - "provider": "UNHCR Europe a News", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "clingendael-publications": { - "provider": "Clingendael Institute a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dw-europe-rss": { - "provider": "Deutsche Welle a Europe (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ecfr-publications": { - "provider": "European Council on Foreign Relations (ECFR) a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "euronews-europe": { - "provider": "Euronews a Europe", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 28, - "emptyRuns": 21, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-22T22:53:26.529Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 406", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 406", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-24T13:04:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 24, - "quarantined": true, - "quarantinedAt": "2026-04-23T03:28:47.210Z", - "quarantineReason": "Health score degraded to 24 after repeated failures", - "nextFetchAt": "2026-04-24T13:04:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "financial-times-world": { - "provider": "Financial Times a World", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "france24-europe-rss": { - "provider": "France 24 a Europe (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T05:47:56.833Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 4, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T05:47:56.833Z", - "lastEmptyAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T16:03:49.134Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T06:12:01.477Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T05:47:56.833Z" - } - ], - "cooldownUntil": "2026-04-25T05:47:56.833Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-19T16:03:49.134Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T05:47:56.833Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "french-interior-ministry-news": { - "provider": "French Ministry of the Interior - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "icct-perspectives-on-terrorism": { - "provider": "Perspectives on Terrorism (ICCT) a Journal", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "icct-publications": { - "provider": "International Centre for Counter-Terrorism (ICCT) - Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "netherlands-nctv-news": { - "provider": "Dutch NCTV - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "norway-pst-news": { - "provider": "Norwegian Government - News and Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 72, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T16:07:40.227Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "politico-europe": { - "provider": "Politico Europe", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rte-ireland-news-rss": { - "provider": "RTE News - Ireland (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 2, - "emptyRuns": 9, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T11:47:27.254Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 5, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T11:17:25.806Z" - }, - "switzerland-fedpol-news": { - "provider": "Swiss fedpol - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T21:59:30.032Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 5, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T21:59:30.032Z", - "lastEmptyAt": "2026-04-22T20:37:31.462Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T21:59:30.032Z" - } - ], - "cooldownUntil": "2026-04-24T21:59:30.032Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T21:59:30.032Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "telegraph-world-news": { - "provider": "The Telegraph a World News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 30, - "emptyRuns": 27, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T16:07:40.227Z", - "lastFailureAt": "2026-04-19T14:11:10.963Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T08:15:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 23, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T08:15:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "vox-pol-publications": { - "provider": "VOX-Pol Network a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "french-gendarmerie-news": { - "provider": "Gendarmerie Nationale - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "french-police-nationale-news": { - "provider": "Police Nationale - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ireland-gardai-press": { - "provider": "An Garda Siochana - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "netherlands-police-news": { - "provider": "Dutch National Police - News (EN)", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "paris-police-prefecture-news": { - "provider": "France24 - France (RSS)", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "portugal-pj-news": { - "provider": "Policia Judiciaria Portugal - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 43, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T15:59:44.503Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T19:18:33.309Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T15:59:44.503Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "portugal-psp-news": { - "provider": "The Portugal News - Crime", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "coe-counter-terrorism": { - "provider": "Council of Europe a Counter-Terrorism", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "echr-key-judgments-rss": { - "provider": "European Court of Human Rights - Key Judgments RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-22T17:39:27.641Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 60, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastEmptyAt": "2026-04-22T16:17:11.443Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 400", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "cooldownUntil": "2026-04-24T17:39:27.641Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T17:39:27.641Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "echr-press-releases-rss": { - "provider": "European Court of Human Rights - Press Releases RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "french-justice-ministry-news": { - "provider": "French Ministry of Justice - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "netherlands-prosecution-news": { - "provider": "Dutch Public Prosecution Service - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bfv-de-english": { - "provider": "BfV service page (Federal Office for the Protection of the Constitution)", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 56, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T11:07:28.674Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T11:07:28.674Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "dsn-at-english": { - "provider": "DSN Austria - Aktuelles", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "isd-global": { - "provider": "Institute for Strategic Dialogue (ISD) a Articles & Reports", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ocam-be-english": { - "provider": "CUTA (Belgium) threat analysis", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 19, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T16:07:40.227Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T22:54:57.851Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "pet-dk-english": { - "provider": "PET (Denmark) a English News", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "pst-no-english": { - "provider": "PST (Norway) English reporting page", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ran-network": { - "provider": "RUSI - Terrorism and Conflict", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "sapo-se-english": { - "provider": "Swedish Security Service English news", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "supo-fi-english": { - "provider": "SUPO Finland news and press releases", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "iom-news": { - "provider": "IOM (International Organization for Migration) a News", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "acled-updates": { - "provider": "ACLED a Updates and Analysis", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "aljazeera-news-rss": { - "provider": "Al Jazeera English a Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 24, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T10:13:21.253Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 3, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T11:55:25.806Z" - }, - "ap-top-news": { - "provider": "BBC News - Top Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-world": { - "provider": "BBC News a World", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-world-legacy": { - "provider": "BBC News a World (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bellingcat": { - "provider": "Bellingcat a Investigations", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chatham-house-rss": { - "provider": "Chatham House a Research & Commentary (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 7, - "emptyRuns": 11, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T14:03:06.243Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 40, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chathamhouse-events": { - "provider": "Chatham House a Events (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chathamhouse-intl-security-feed": { - "provider": "Chatham House a International Security Programme (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 5, - "emptyRuns": 28, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T14:03:06.243Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 46, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chathamhouse-news-releases": { - "provider": "Chatham House a News Releases (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "counter-extremism-project-news": { - "provider": "Counter Extremism Project a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 5, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T12:14:24.733Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T21:04:21.166Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "crisis-group": { - "provider": "International Crisis Group a Research & Analysis", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "crisis-group-europe": { - "provider": "International Crisis Group a Europe (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "global-initiative-news": { - "provider": "Global Initiative Against Transnational Organized Crime a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "interpol-news-events": { - "provider": "INTERPOL a News and Events", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "just-security": { - "provider": "Just Security a Law, Rights & National Security", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T23:55:39.351Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T09:29:55.311Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T04:05:33.139Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T09:29:55.311Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lawfare-blog": { - "provider": "Just Security - National Security Analysis", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "long-war-journal": { - "provider": "Long War Journal a News Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 6, - "emptyRuns": 17, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", - "lastFailureAt": "2026-04-18T00:05:41.686Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 29, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nato-news-rss": { - "provider": "NATO a News (RSS)", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "occrp-news": { - "provider": "OCCRP a Organized Crime and Corruption Reporting Project", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "osce-press-releases": { - "provider": "OSCE a Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "resolve-network-research": { - "provider": "RESOLVE Network a Research", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Health score degraded to 17 after repeated failures", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "reuters-uk": { - "provider": "Reuters a UK News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rferl-security-news-rss": { - "provider": "Radio Free Europe/Radio Liberty a Security (RSS)", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - } - ], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "soufan-center-intelbrief": { - "provider": "The Soufan Center a IntelBrief", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tech-against-terrorism-podcast": { - "provider": "Tech Against Terrorism - Podcast", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tony-blair-institute-news": { - "provider": "Tony Blair Institute for Global Change a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unodc-news": { - "provider": "UNODC (UN Office on Drugs and Crime) a Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "war-on-the-rocks": { - "provider": "War on the Rocks a National Security & CT Analysis", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gctf-news": { - "provider": "Global Counterterrorism Forum (GCTF) a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unoct-news": { - "provider": "UN Office of Counter-Terrorism (UNOCT) - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "unsc-counter-terrorism-committee": { - "provider": "UN Security Council - Counter-Terrorism Committee (CTC) Updates", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gnet-artificial-intelligence-rss": { - "provider": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 76, - "emptyRuns": 12, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T20:17:25.806Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 64, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T20:17:25.806Z" - }, - "gnet-radicalisation-rss": { - "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-16T16:57:11.406Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T21:08:30.446Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gnet-youth-rss": { - "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-22T17:39:27.641Z", - "lastBuiltCount": 0, - "successfulRuns": 5, - "emptyRuns": 0, - "failedRuns": 10, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T08:04:04.612Z", - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T11:07:28.674Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T12:15:37.169Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T22:00:46.520Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T17:16:47.386Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "cooldownUntil": "2026-04-24T17:39:27.641Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T22:00:46.520Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T17:39:27.641Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tech-against-terrorism": { - "provider": "Tech Against Terrorism a Blog", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tech-against-terrorism-home": { - "provider": "Tech Against Terrorism - Home", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fatf-news": { - "provider": "Financial Action Task Force (FATF) a News", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "interpol-notices": { - "provider": "INTERPOL a Notices", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unsc-1267-press-releases": { - "provider": "UN Security Council - ISIL/Da'esh & Al-Qaeda Sanctions Committee Press Releases", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unsc-consolidated-list": { - "provider": "UN Security Council - Consolidated Sanctions List Updates (RSS)", - "lane": "sanctions", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "barking-dagenham-council-news": { - "provider": "Barking and Dagenham Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 6, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "barnet-council-news": { - "provider": "Barnet Post", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "barts-health-news": { - "provider": "Barts Health NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T08:09:12.931Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 9, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T08:09:12.931Z", - "lastEmptyAt": "2026-04-23T05:47:56.833Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T08:09:12.931Z" - } - ], - "cooldownUntil": "2026-04-25T08:09:12.931Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-25T08:09:12.931Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-london-rss": { - "provider": "BBC News - London RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 28, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 17, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-18T23:43:16.267Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 49, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bexley-council-news": { - "provider": "Bexley Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "brent-council-news": { - "provider": "Brent Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "bromley-council-news": { - "provider": "Bromley Council a Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "camden-council-news": { - "provider": "Camden Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "chelsea-westminster-news": { - "provider": "Chelsea and Westminster Hospital NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "city-of-london-police-fraud-reporting": { - "provider": "City of London Police - Fraud Reporting", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cnwl-news": { - "provider": "Central and North West London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "croydon-council-news": { - "provider": "Croydon Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ealing-council-news": { - "provider": "Ealing Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 57, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 29, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": "2026-04-18T21:09:53.488Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T21:09:53.488Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "east-london-nhs-news": { - "provider": "East London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "enfield-council-news": { - "provider": "Enfield Council a News and Events", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gosh-news": { - "provider": "Great Ormond Street Hospital a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "guys-st-thomas-news": { - "provider": "Guy's and St Thomas' NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hackney-council-news": { - "provider": "Hackney Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hammersmith-fulham-news": { - "provider": "Hammersmith and Fulham Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 6, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "haringey-council-news": { - "provider": "Haringey Community Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "harrow-council-news": { - "provider": "Harrow Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "havering-council-news": { - "provider": "Havering Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "heathrow-media-centre": { - "provider": "Heathrow a Media Centre", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hillingdon-council-news": { - "provider": "Hillingdon Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "homerton-healthcare-news": { - "provider": "Homerton Healthcare NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hounslow-council-news": { - "provider": "Hounslow Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "imperial-healthcare-news": { - "provider": "Imperial College Healthcare NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "islington-council-news": { - "provider": "Islington Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "kensington-chelsea-newsroom": { - "provider": "Royal Borough of Kensington and Chelsea a Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "kings-college-hospital-news": { - "provider": "King's College Hospital NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "kingston-council-news": { - "provider": "Kingston Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "lambeth-council-news": { - "provider": "Lambeth Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "lewisham-council-news": { - "provider": "Salamander News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lnwh-news": { - "provider": "London North West University Healthcare NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "london-ambulance-news": { - "provider": "London Ambulance Service a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-city-airport-media-centre": { - "provider": "London City Airport a Media Centre", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-councils-news": { - "provider": "London Councils a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-fire-brigade-news": { - "provider": "London Fire Brigade a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-gov-home": { - "provider": "London.gov.uk", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-gov-press-releases-html": { - "provider": "London.gov.uk - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-gov-rss-80603": { - "provider": "Greater London Authority a RSS Feed 80603", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "london-gov-rss-80632": { - "provider": "Greater London Authority a RSS Feed 80632", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "mayor-of-london-press-releases": { - "provider": "Mayor of London a Press Releases", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "merton-council-news": { - "provider": "Merton Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "met-police-the-met-tag": { - "provider": "Metropolitan Police - The Met Tag", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 76, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "moorfields-news": { - "provider": "Moorfields Eye Hospital NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "nelft-news": { - "provider": "North East London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "newham-council-news": { - "provider": "Newham Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "nhs-london-ncl-news": { - "provider": "NHS North Central London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nhs-london-nel-news": { - "provider": "NHS North East London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-21T10:07:46.576Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T10:07:46.576Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "nhs-london-nwl-news": { - "provider": "NHS North West London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "nhs-london-sel-news": { - "provider": "NHS South East London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nhs-london-swl-news": { - "provider": "NHS South West London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "north-middlesex-news": { - "provider": "North Middlesex University Hospital a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "oxleas-news": { - "provider": "Oxleas NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "port-of-london-authority-news": { - "provider": "Port of London Authority a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "redbridge-council-news": { - "provider": "Redbridge Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "richmond-council-news": { - "provider": "Richmond Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 65, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "royal-free-london-news": { - "provider": "Royal Free London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "royal-greenwich-news": { - "provider": "Royal Borough of Greenwich a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 6, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "slam-news": { - "provider": "South London and Maudsley NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "southwark-newsroom": { - "provider": "Southwark Council a Newsroom", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "st-georges-news": { - "provider": "St George's University Hospitals NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "sutton-council-news": { - "provider": "Sutton Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "swlstg-news": { - "provider": "South West London and St George's Mental Health NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "tavistock-portman-news": { - "provider": "Tavistock and Portman NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tfl-press-releases": { - "provider": "Transport for London - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tfl-press-releases-html": { - "provider": "Transport for London - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tower-hamlets-council-news": { - "provider": "Tower Hamlets Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uclh-news": { - "provider": "University College London Hospitals a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 58, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-21T11:46:02.615Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "waltham-forest-council-news": { - "provider": "Waltham Forest Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "wandsworth-council-news": { - "provider": "Wandsworth Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 65, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "westminster-city-council-news": { - "provider": "Westminster City Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "whittington-health-news": { - "provider": "Whittington Health a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "city-of-london-police-news": { - "provider": "National Crime Agency - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "city-of-london-police-news-html": { - "provider": "City of London Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "city-of-london-police-newsroom": { - "provider": "Metropolitan Police Service - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-london": { - "provider": "Counter Terrorism Policing London", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "met-police-latest-news": { - "provider": "Metropolitan Police - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 106, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "met-police-news": { - "provider": "Metropolitan Police Service a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 106, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "london-assembly-press-releases": { - "provider": "London Assembly a Press Releases", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "mopac-html": { - "provider": "Mayor's Office for Policing and Crime", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-resilience": { - "provider": "Resilience First - Latest Updates", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T23:56:26.571Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 17, - "failedRuns": 4, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T23:56:26.571Z", - "lastEmptyAt": "2026-04-20T11:00:44.891Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T23:56:26.571Z" - } - ], - "cooldownUntil": "2026-04-24T23:56:26.571Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T23:56:26.571Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gov-uk-fcdo-travel-advice": { - "provider": "FCDO a Foreign Travel Advice Index", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-border-force": { - "provider": "Border Force (UK) a Announcements and Publications", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ukvi": { - "provider": "UK Visas and Immigration a Announcements and Publications", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "bbc-news-england-legacy": { - "provider": "BBC News a England (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 29, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 18, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-18T11:15:29.208Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 3, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-front-page-legacy": { - "provider": "BBC News a Front Page (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 15, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-uk": { - "provider": "BBC News a UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 26, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 16, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-uk-politics-legacy": { - "provider": "BBC News a UK Politics (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 4, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-17T09:48:51.002Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T03:30:54.684Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T15:59:44.503Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-19T03:30:54.684Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chatham-house-home": { - "provider": "Chatham House", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chatham-house-security-defence": { - "provider": "Chatham House - Security and Defence", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "essex-police-news": { - "provider": "Essex Police a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gov-uk-defence-intelligence": { - "provider": "UK Defence Intelligence a GOV.UK", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-terrorism-search": { - "provider": "GOV.UK Search - Terrorism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "guardian-uk": { - "provider": "The Guardian a UK News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T21:58:03.349Z", - "lastBuiltCount": 0, - "successfulRuns": 23, - "emptyRuns": 37, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T05:47:56.833Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-23T21:58:03.349Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T09:58:03.349Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 48, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:58:03.349Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "henry-jackson-society-news": { - "provider": "RUSI - Terrorism and Conflict", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hope-not-hate-home": { - "provider": "Hope not hate podcast", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "institute-global-home": { - "provider": "Institute for Global Change", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "kent-police-news": { - "provider": "Kent Police a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "mi5-news": { - "provider": "National Crime Agency - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "mi5-news-rss-direct": { - "provider": "MI5 - News RSS", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "national-crime-agency-news": { - "provider": "National Crime Agency a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "npcc-releases": { - "provider": "National Police Chiefs' Council - Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-all-crime-leicester": { - "provider": "Police.uk - Street Crime Around Leicester", - "lane": "context", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 73, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-stops-force-leicestershire": { - "provider": "Police.uk - Force Stops (Leicestershire)", - "lane": "context", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-stops-street-leicester": { - "provider": "Police.uk - Street Stops Around Leicester", - "lane": "context", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "report-fraud-home": { - "provider": "Report Fraud", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "report-fraud-newsroom": { - "provider": "Report Fraud - Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rusi-home": { - "provider": "RUSI", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T03:30:54.684Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T03:30:54.684Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-19T03:30:54.684Z", - "quarantineReason": "Health score degraded to 20 after repeated failures", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rusi-publications": { - "provider": "RUSI (Royal United Services Institute) a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rusi-terrorism-conflict": { - "provider": "RUSI - Terrorism and Conflict", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T03:29:13.488Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T12:14:24.733Z", - "lastEmptyAt": "2026-04-24T03:29:13.488Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T12:14:24.733Z" - } - ], - "cooldownUntil": "2026-04-24T15:29:13.488Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T21:04:21.166Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T15:29:13.488Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "skwawkbox": { - "provider": "Skwawkbox", - "lane": "context", - "kind": "playwright_html", - "lastCheckedAt": "2026-04-16T22:57:09.120Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T22:57:09.120Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T22:57:09.120Z" - } - ], - "cooldownUntil": "2026-04-24T09:24:00.000Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 32, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:24:00.000Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "sky-news-uk-rss": { - "provider": "Sky News UK a Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 35, - "emptyRuns": 38, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T20:17:25.806Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 64, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T20:17:25.806Z" - }, - "the-sun-all": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-sun-all-english": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-sun-homepage": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-sun-news-english": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-yorkshire-police-coroner-appeals-rss": { - "provider": "West Yorkshire Police - Coroner Appeals Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 58, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-21T11:46:02.615Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "wiltshire-999s": { - "provider": "Wiltshire 999s", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "belfast-live": { - "provider": "Belfast Live", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 6, - "emptyRuns": 22, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 20, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T05:46:58.069Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 40, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "birmingham-mail": { - "provider": "Birmingham Mail", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "breaking-news-today": { - "provider": "Breaking News Today", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cambridge-news": { - "provider": "Cambridge News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "channel-4-news": { - "provider": "Channel 4 News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 12, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-19T17:13:24.435Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-20T11:00:44.891Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T00:08:15.005Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T03:57:52.244Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T08:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 10, - "quarantined": true, - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T08:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "consett-magazine": { - "provider": "Consett Magazine", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-echo": { - "provider": "Daily Echo", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-express": { - "provider": "Daily Express", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-mail-online": { - "provider": "Daily Mail Online - Popular Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 20, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 17, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-mirror": { - "provider": "Daily Mirror", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-politics": { - "provider": "Daily Politics", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - } - ], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "deadline-news": { - "provider": "Deadline News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T03:29:13.488Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-24T03:29:13.488Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 500", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": "2026-04-24T15:29:13.488Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "quarantineReason": "Health score degraded to 20 after repeated failures", - "nextFetchAt": "2026-04-24T15:29:13.488Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "evening-standard": { - "provider": "Evening Standard", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 3, - "emptyRuns": 25, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 20, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T05:46:58.069Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "glasgow-times": { - "provider": "Glasgow Times", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "grimsby-telegraph": { - "provider": "Grimsby Telegraph", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "herald-scotland-news": { - "provider": "Herald Scotland - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "huffpost-uk": { - "provider": "HuffPost UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "larne-times": { - "provider": "Larne Times", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "manchester-evening-news": { - "provider": "Manchester Evening News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "metro": { - "provider": "BBC News - UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "news-uk": { - "provider": "News UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "pinknews": { - "provider": "PinkNews", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - } - ], - "cooldownUntil": "2026-04-24T20:17:25.806Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T20:17:25.806Z" - }, - "politics-co-uk": { - "provider": "Politics.co.uk", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "positive-news": { - "provider": "Positive News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "scottish-field": { - "provider": "Scottish Field", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "surgezirc-uk": { - "provider": "SurgeZirc UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T11:47:27.254Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 15, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastEmptyAt": "2026-04-23T08:09:12.931Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T14:11:10.963Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "cooldownUntil": "2026-04-25T11:47:27.254Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T08:04:04.612Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T11:47:27.254Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-argus-news": { - "provider": "The Argus", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-bolton-news": { - "provider": "The Bolton News - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "church-of-england-newspaper": { - "provider": "Church of England Newspaper", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 26, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 16, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-daily-mash": { - "provider": "The Daily Mash", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - } - ], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-record": { - "provider": "Daily Record", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "guardian-uk-top-stories": { - "provider": "The Guardian - UK Top Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 12, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-18T11:15:29.208Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T23:43:16.267Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T06:30:13.977Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "independent-top-stories": { - "provider": "The Independent - Top Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T20:18:46.625Z", - "lastBuiltCount": 0, - "successfulRuns": 4, - "emptyRuns": 39, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-19T16:03:49.134Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-23T20:18:46.625Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": "2026-04-24T08:18:46.625Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T08:18:46.625Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northern-echo-news": { - "provider": "The Northern Echo - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-poke": { - "provider": "The Poke", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "scarborough-news": { - "provider": "The Scarborough News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-scotsman-news": { - "provider": "The Scotsman - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-scottish-sun": { - "provider": "The Scottish Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-sun": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-week-uk": { - "provider": "The Week UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 11, - "emptyRuns": 14, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T11:07:28.674Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T08:39:19.161Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T08:32:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 13, - "quarantined": true, - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T08:32:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-york-press-news": { - "provider": "The York Press - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "wales-online": { - "provider": "WalesOnline", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "a-lady-in-london": { - "provider": "A Lady in London", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T03:29:13.488Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T03:29:13.488Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-24T03:29:13.488Z" - } - ], - "cooldownUntil": "2026-04-26T03:29:13.488Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T03:29:13.488Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "a-luxury-travel-blog": { - "provider": "A Luxury Travel Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "age-uk-discover": { - "provider": "Age UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "alan-malcher": { - "provider": "Alan Malcher", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "arcticdry": { - "provider": "ArcticDry", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 26, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 18, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T08:04:04.612Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T08:04:04.612Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "britishbeautyblogger": { - "provider": "British Beauty Blogger", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "buy-firewood-direct": { - "provider": "Buy Firewood Direct", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "carly-rowena": { - "provider": "Carly Rowena", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cherished-holiday-homes": { - "provider": "Cherished Holiday Homes", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chique-home-living": { - "provider": "Chique Home Living", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "clubwise-blog": { - "provider": "ClubWise Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "disneyrollergirl": { - "provider": "Disneyrollergirl", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "elluminet-press": { - "provider": "9to5Mac", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Health score degraded to 20 after repeated failures", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "england-naturally": { - "provider": "England, Naturally", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 18, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-24T20:52:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": true, - "quarantinedAt": "2026-04-23T03:28:47.210Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T20:52:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "evening-shire": { - "provider": "Evening Shire", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T20:18:46.625Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastEmptyAt": "2026-04-23T20:18:46.625Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "cooldownUntil": "2026-04-24T08:18:46.625Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T08:18:46.625Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "everything-zany": { - "provider": "Everything Zany", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T14:03:06.243Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "faded-spring": { - "provider": "Emily Underworld", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fmcg-gurus": { - "provider": "FMCG Gurus", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 24, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 9, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-24T12:16:25.806Z" - }, - "foreign-office-blogs": { - "provider": "Foreign Office Blogs", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "fresh-design-blog": { - "provider": "Fresh Design Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ian-neate-blog": { - "provider": "9to5Mac", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "jollydeck": { - "provider": "JollyDeck", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lifestylelinked": { - "provider": "LifeStyleLinked", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-review-of-books": { - "provider": "London Review of Books", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "love-my-dress": { - "provider": "Love My Dress", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 18, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 520", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 11, - "quarantined": true, - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "quarantineReason": "Health score degraded to 14 after repeated failures", - "nextFetchAt": "2026-04-24T10:21:25.806Z" - }, - "manic-mum-life": { - "provider": "Manic Mum Life", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T14:03:06.243Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "marie-claire-uk": { - "provider": "Marie Claire UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "office-breaks": { - "provider": "Office Breaks", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "on-the-think-of": { - "provider": "On The Think Of", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "quadrant2design-exhibiting-guides": { - "provider": "Quadrant2Design Exhibiting Guides", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T23:57:53.617Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastEmptyAt": "2026-04-23T23:57:53.617Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "cooldownUntil": "2026-04-24T11:57:53.617Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T11:57:53.617Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "really-ree": { - "provider": "Really Ree", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T14:03:06.243Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rocknroll-bride": { - "provider": "Rock n Roll Bride", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "semibold": { - "provider": "Semibold", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 13, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "silly-old-sod": { - "provider": "Silly Old Sod", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "cooldownUntil": "2026-04-24T20:17:25.806Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T04:05:33.139Z", - "quarantineReason": "Persistent timeouts — endpoint may be overloaded or unreachable", - "nextFetchAt": "2026-04-24T20:17:25.806Z" - }, - "silverspoon-london": { - "provider": "SilverSpoon London", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "sks-business-services": { - "provider": "SKS Business Services", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hnd-assignment-help-uk-medium": { - "provider": "Stories by HND Assignment Help UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "streetspace": { - "provider": "Streetspace", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tenura": { - "provider": "Tenura", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "thank-you-for-the-days": { - "provider": "Thank you for the days", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 4, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-19T14:11:10.963Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-curry-guy": { - "provider": "The Curry Guy", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "real-talk-uk": { - "provider": "The Real Talk UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-stratfordian": { - "provider": "The Stratfordian", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "training-express": { - "provider": "Training Express", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-constitutional-law-association": { - "provider": "UK Constitutional Law Association", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-fundraising-blog": { - "provider": "UK Fundraising", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-human-rights-blog": { - "provider": "UK Human Rights Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "vershd": { - "provider": "Vershd", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "vuelio-uk": { - "provider": "Vuelio", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "avon-and-somerset-police-news-html": { - "provider": "Avon and Somerset Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "avon-somerset-police-news": { - "provider": "Avon & Somerset Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "bedfordshire-police-news": { - "provider": "Bedfordshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bedfordshire-police-news-search": { - "provider": "Bedfordshire Police - News Search", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "british-transport-police-news": { - "provider": "British Transport Police Authority - News Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "btp-british-transport-police-news-html": { - "provider": "British Transport Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cambridgeshire-police-news-search": { - "provider": "Cambridgeshire Police - News Search", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cheshire-police-news": { - "provider": "Cheshire Constabulary - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cleveland-police-news": { - "provider": "Cleveland Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cps-news-centre": { - "provider": "Crown Prosecution Service a News Centre", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-north-west": { - "provider": "Counter Terrorism Policing North West", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-uk-latest-news": { - "provider": "Counter Terrorism Policing UK a Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-uk-rss-feed": { - "provider": "Counter Terrorism Policing UK - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cumbria-police-news": { - "provider": "Cumbria Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cumbria-police-newsroom": { - "provider": "Cumbria Police - Newsroom", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "derbyshire-police-news": { - "provider": "Derbyshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "devon-and-cornwall-police-newsroom": { - "provider": "Devon and Cornwall Police - Newsroom", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "devon-cornwall-police-news": { - "provider": "Devon and Cornwall Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dorset-police-news": { - "provider": "Dorset Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dorset-police-newsroom": { - "provider": "Dorset Police - Newsroom", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "durham-constabulary-news": { - "provider": "Durham Constabulary a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "durham-police-durham-news": { - "provider": "Durham Police - Durham News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dyfed-powys-police-news": { - "provider": "Dyfed-Powys Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "essex-police-news-html": { - "provider": "Essex Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gloucestershire-police-news": { - "provider": "Gloucestershire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gmp-news": { - "provider": "Greater Manchester Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "greater-manchester-police-news": { - "provider": "Greater Manchester Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gwent-police-news": { - "provider": "Gwent Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hampshire-police-news": { - "provider": "Hampshire & Isle of Wight Constabulary a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hertfordshire-police-news": { - "provider": "Hertfordshire Constabulary a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "humberside-police-news-search": { - "provider": "Humberside Police - News Search", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "kent-police-news-html": { - "provider": "Kent Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lancashire-constabulary-news": { - "provider": "Lancashire Constabulary a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "leicestershire-police-news": { - "provider": "National Crime Agency - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lincolnshire-police-news": { - "provider": "Lincolnshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "merseyside-police-news": { - "provider": "Merseyside Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "merseyside-police-news-html": { - "provider": "Merseyside Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "norfolk-constabulary-news": { - "provider": "Norfolk Constabulary - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "north-wales-police-news": { - "provider": "North Wales Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "north-yorkshire-police-news-html": { - "provider": "North Yorkshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northamptonshire-police-news-html": { - "provider": "Northamptonshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northumbria-police-news": { - "provider": "North East Bylines", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northumbria-police-northumbria-news": { - "provider": "Northumbria Police - Northumbria News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nottinghamshire-police-news": { - "provider": "Nottinghamshire Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nottinghamshire-police-nottinghamshire-news": { - "provider": "Nottinghamshire Police - Nottinghamshire News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "police-scotland-news": { - "provider": "Police Scotland news", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 30, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T19:32:35.264Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Health score degraded to 23 after repeated failures", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "psni-latest-news": { - "provider": "Police Service of Northern Ireland - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "psni-news": { - "provider": "Police Service of Northern Ireland a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "south-wales-police-news": { - "provider": "South Wales Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "south-yorkshire-police-news": { - "provider": "South Yorkshire Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "staffordshire-police-news": { - "provider": "Staffordshire Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "staffordshire-police-staffordshire-news": { - "provider": "Staffordshire Police - Staffordshire News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "suffolk-constabulary-news": { - "provider": "Suffolk Constabulary - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "surrey-police-news": { - "provider": "Surrey Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "sussex-police-news": { - "provider": "Sussex Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "thames-valley-police-news": { - "provider": "Thames Valley Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "thames-valley-police-news-html": { - "provider": "Thames Valley Police - Thames Valley News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "warwickshire-police-news": { - "provider": "Warwickshire Connected - Latest Alerts", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-mercia-police-news-html": { - "provider": "West Mercia Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-midlands-police-news": { - "provider": "West Midlands Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-yorkshire-police-all-rss": { - "provider": "West Yorkshire Police - All Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-police-appeals-rss": { - "provider": "West Yorkshire Police - Appeals Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-police-missing-rss": { - "provider": "West Yorkshire Police - Missing Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-yorkshire-police-news": { - "provider": "West Yorkshire Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-21T11:46:02.615Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-yorkshire-police-news-appeals": { - "provider": "West Yorkshire Police - News Appeals", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-police-news-rss": { - "provider": "West Yorkshire Police - News Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-police-releases-rss": { - "provider": "West Yorkshire Police - Releases Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "wiltshire-police-news": { - "provider": "Wiltshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "attorney-generals-office-html": { - "provider": "Attorney General's Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "cabinet-office-html": { - "provider": "Cabinet Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "cps-homepage": { - "provider": "Crown Prosecution Service", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "crown-office-news": { - "provider": "Crown Office and Procurator Fiscal Service - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "echr-uk-grand-chamber-rss": { - "provider": "European Court of Human Rights - UK Grand Chamber RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "extremism-commission-blog": { - "provider": "Commission for Countering Extremism - Blog", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "fcdo-html": { - "provider": "Foreign, Commonwealth & Development Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 76, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-scot-access-to-justice-latest": { - "provider": "Scottish Government - Access to Justice Latest", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-cabinet-office-atom": { - "provider": "Cabinet Office a GOV.UK Atom Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-hmcts": { - "provider": "HMCTS a Courts and Tribunals Announcements", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-hmic": { - "provider": "HM Inspectorate of Constabulary a GOV.UK", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gov-uk-home-office-atom": { - "provider": "UK Home Office a Atom Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-ipco": { - "provider": "Investigatory Powers Commissioner's Office a GOV.UK", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-mod-atom": { - "provider": "Ministry of Defence a GOV.UK Atom Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-moj-atom": { - "provider": "Ministry of Justice a GOV.UK Atom Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-news-and-communications-atom": { - "provider": "GOV.UK - News and Communications Atom", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 17, - "emptyRuns": 74, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 30, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-20T21:17:14.299Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-parliament-jcnss": { - "provider": "UK Parliament a Joint Committee on National Security Strategy", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hmiprisons-news": { - "provider": "HM Inspectorate of Prisons - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hmiprobation-news": { - "provider": "HM Inspectorate of Probation - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "home-office-media-blog": { - "provider": "Home Office Media Blog", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "independent-reviewer-terrorism-legislation": { - "provider": "Independent Reviewer of Terrorism Legislation a Reports", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "independent-reviewer-terrorism-legislation-html": { - "provider": "Independent Reviewer of Terrorism Legislation", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "joint-committee-human-rights-html": { - "provider": "Joint Committee on Human Rights", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T19:31:23.009Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 15, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T19:31:23.009Z", - "lastEmptyAt": "2026-04-23T18:02:43.923Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T19:31:23.009Z" - } - ], - "cooldownUntil": "2026-04-25T19:31:23.009Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-25T19:31:23.009Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "judiciary-rss-feeds-page": { - "provider": "Judiciary UK - RSS Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "judiciary-uk-announcements-feed": { - "provider": "Judiciary UK - Announcements Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "judiciary-uk-judgments-feed": { - "provider": "Judiciary UK - Judgments Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "judiciary-uk-news": { - "provider": "Judiciary of England and Wales a News", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-22T16:17:11.443Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 34, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T16:17:11.443Z", - "lastEmptyAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T11:44:44.316Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T16:17:11.443Z" - } - ], - "cooldownUntil": "2026-04-24T16:17:11.443Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T16:17:11.443Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "judiciary-uk-publications-feed": { - "provider": "Judiciary UK - Publications Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "lords-in-focus-rss": { - "provider": "Hansard Society - Despatch Box", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lords-library-notes-rss": { - "provider": "Hansard Society - Despatch Box", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ministry-of-defence-html": { - "provider": "Ministry of Defence", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ons-html": { - "provider": "Office for National Statistics", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "parliament-all-bills-rss": { - "provider": "Parliament - All Bills RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "parliament-private-bills-rss": { - "provider": "Parliament - Private Bills RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "parliament-public-bills-rss": { - "provider": "Parliament - Public Bills RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-ombudsman-current-investigations": { - "provider": "Police Ombudsman - Current Investigations", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "police-uk-crime-categories-2024-01": { - "provider": "Police.uk - Crime Categories (2024-01)", - "lane": "oversight", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-crimes-street-dates": { - "provider": "Police.uk - Street Crime Dataset Dates", - "lane": "oversight", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-outcomes-at-location-1609590": { - "provider": "Police Data UK - Outcomes At Location API Docs", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "police-uk-outcomes-for-crime-e11dade0": { - "provider": "Police.uk - Outcomes For Crime e11dade0", - "lane": "oversight", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-fai-determinations-rss": { - "provider": "Scottish Courts - Fatal Accident Inquiry Determinations RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-fai-hearings-rss": { - "provider": "Scottish Courts - Fatal Accident Inquiry Hearings RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-high-court-justiciary-judgments-rss": { - "provider": "Scottish Courts - High Court of Justiciary Judgments RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-high-court-practice-notes-rss": { - "provider": "Scottish Courts - High Court of Justiciary Practice Notes RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-judgments-rss": { - "provider": "Scottish Courts - Judgments RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-news-articles-rss": { - "provider": "Scottish Courts - News Articles RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-publications-rss": { - "provider": "Scottish Courts - Publications RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-rss-feeds-page": { - "provider": "Scottish Courts and Tribunals - RSS Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 65, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "scotcourts-sheriff-criminal-practice-notes-rss": { - "provider": "Scottish Courts - Sheriff Court Criminal Practice Notes RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scottish-government-justice-news": { - "provider": "Scottish Government - Justice and Safety", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "serious-fraud-office-news": { - "provider": "Serious Fraud Office a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 63, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-home-office": { - "provider": "UK Home Office a Announcements and Publications", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 101, - "emptyRuns": 4, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-19T18:05:04.781Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-iopc-news": { - "provider": "Independent Office for Police Conduct a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ncsc-news": { - "provider": "National Cyber Security Centre (UK) a News", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 5, - "successfulRuns": 105, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ncsc-threat-reports": { - "provider": "National Cyber Security Centre (UK) a Threat Reports", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-16T16:57:11.406Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T21:08:30.446Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-business-news": { - "provider": "UK Parliament - Business News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-defence-committee": { - "provider": "UK Parliament a Defence Select Committee", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 68, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-23T08:09:12.931Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-foreign-affairs-committee": { - "provider": "UK Parliament a Foreign Affairs Select Committee", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-home-affairs-committee": { - "provider": "UK Parliament a Home Affairs Committee (News)", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "cooldownUntil": "2026-04-26T08:17:25.806Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T08:17:25.806Z" - }, - "uk-parliament-isc": { - "provider": "UK Parliament a Intelligence and Security Committee (Reports & News)", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 6, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-justice-committee": { - "provider": "UK Parliament a Justice Select Committee", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "act-campaign": { - "provider": "ACT Awareness Campaign", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "cheshire-police-alert": { - "provider": "Cheshire Police Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ct-policing-prevent-programme": { - "provider": "Counter Terrorism Policing - Prevent", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-what-you-can-do": { - "provider": "Counter Terrorism Policing - What You Can Do", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dc-police-community-messaging": { - "provider": "Dorset and Cornwall Police - Community Messaging", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "devon-cornwall-alerts": { - "provider": "Devon and Cornwall Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gnet-research": { - "provider": "Global Network on Extremism & Technology (GNET) a Main Feed", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 95, - "emptyRuns": 6, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T06:01:25.327Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 97, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T12:00:25.806Z" - }, - "gov-uk-contest-strategy": { - "provider": "GOV.UK a CONTEST Counter-Terrorism Strategy", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-counter-extremism-commissioner": { - "provider": "Counter Extremism Commissioner a GOV.UK", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 77, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T19:01:30.233Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-prevent-strategy": { - "provider": "UK Home Office - Prevent duty guidance", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-report-terrorism": { - "provider": "GOV.UK - Report Terrorism", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gov-uk-terrorism-national-emergency": { - "provider": "GOV.UK - Terrorism National Emergency", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "icsr-kcl": { - "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "met-office-seasonal-advice": { - "provider": "Met Office - Seasonal Advice", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "mi5-terrorism-threat-levels": { - "provider": "MI5 - Terrorism Threat Levels", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "mi5-uk-threat-level": { - "provider": "MI5 (Security Service) a UK Threat Level", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "my-community-alert": { - "provider": "My Community Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-23T11:47:27.254Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 45, - "failedRuns": 2, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastEmptyAt": "2026-04-23T10:13:21.253Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T19:28:57.337Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "cooldownUntil": "2026-04-25T11:47:27.254Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T11:47:27.254Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "north-wales-community-alert": { - "provider": "North Wales Community Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T03:29:13.488Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 41, - "failedRuns": 4, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T03:29:13.488Z", - "lastEmptyAt": "2026-04-23T23:57:53.617Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 429", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-17T05:46:58.069Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-24T03:29:13.488Z" - } - ], - "cooldownUntil": "2026-04-26T03:29:13.488Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T03:29:13.488Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northamptonshire-talking": { - "provider": "Northamptonshire Talking", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "npsa-blog": { - "provider": "NPSA - Blog", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "npsa-blog-news": { - "provider": "NPSA - Blog News", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "npsa-national-protective-security-authority": { - "provider": "NPSA - Activity on GOV.UK", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "protectuk": { - "provider": "ProtectUK (NPSA) a Protective Security Guidance", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "south-yorkshire-police-alerts": { - "provider": "South Yorkshire Police Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "stay-in-the-know-home": { - "provider": "Stay In The Know - Community Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "stay-in-the-know-latest-alerts": { - "provider": "Stay In The Know - Latest Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 58, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ncsc-all-rss": { - "provider": "UK NCSC - All Updates RSS", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ncsc-homepage": { - "provider": "UK NCSC - Homepage", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-prevent-duty-guidance": { - "provider": "GOV.UK a Prevent Duty Guidance (Collection)", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-midlands-community-alerts": { - "provider": "WMNow - Community Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-community-alert": { - "provider": "West Yorkshire Community Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-proscribed-terrorist-orgs": { - "provider": "GOV.UK a Proscribed Terrorist Organisations", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hm-treasury-html": { - "provider": "HM Treasury", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ofsi-blog-home": { - "provider": "OFSI - Blog", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "otsi-blog-home": { - "provider": "OTSI - Blog", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 101, - "emptyRuns": 4, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-19T18:05:04.781Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ofsi-blog": { - "provider": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "lane": "sanctions", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 2, - "successfulRuns": 105, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, + "healthScore": 90, + "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-sanctions-list": { - "provider": "UK Sanctions List (FCDO) a Consolidated List (XML Service)", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ctc-sentinel": { - "provider": "Combating Terrorism Center at West Point - CTC Sentinel", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dhs-press-releases": { - "provider": "US Department of Homeland Security - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "dni-press-releases": { - "provider": "Office of the Director of National Intelligence - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "doj-nsd-press-releases": { - "provider": "U.S. Department of Justice - National Security Division Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "fbi-national-press-releases": { - "provider": "FBI - National Press Releases (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fbi-stories": { - "provider": "FBI - Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fbi-top-stories": { - "provider": "FBI - Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gw-program-extremism": { - "provider": "George Washington University - Program on Extremism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nsa-cybersecurity-news": { - "provider": "NSA - Cybersecurity Advisories & Guidance", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "rand-terrorism-topic": { - "provider": "RAND - Terrorism Topic Updates", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rewards-for-justice": { - "provider": "U.S. Department of State - Rewards for Justice", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "start-baad-database": { - "provider": "National Consortium for the Study of Terrorism (START) - Big Allied and Dangerous (BAAD) Database", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "start-center-publications": { - "provider": "START Center (UMD) - News & Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "state-dept-terrorism": { - "provider": "US State Department - Bureau of Counterterrorism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "cisa-cybersecurity-advisories": { - "provider": "CISA - Cybersecurity Alerts & Advisories", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 76, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "us-house-homeland-security": { - "provider": "US House Committee on Homeland Security - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "us-treasury-ofac-press-releases": { - "provider": "U.S. Treasury (OFAC) - Press Releases", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 79, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T15:11:26.228Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "us-treasury-ofac-recent-actions": { - "provider": "U.S. Treasury (OFAC) - Recent Actions", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" + "nextFetchAt": "2026-04-24T18:50:20.804Z" } } } diff --git a/source-quarantine.html b/source-quarantine.html index df1bcf8c..67bcdf68 100644 --- a/source-quarantine.html +++ b/source-quarantine.html @@ -269,13 +269,13 @@

Source Quarantine Review

- Generated: 2026-04-24T08:17:25.806Z - Low-health sources: 529 + Generated: 2026-04-24T15:22:20.804Z + Low-health sources: 0 Pending suggestions: 0 SLA: deprioritised, auto-recheck 24h+ - New this week: 231 - Avg health score: 3/100 - Avg time in quarantine: 153h + New this week: 0 + Avg health score: 0/100 + Avg time in quarantine: 0h Re-quarantine rate: 0%
@@ -455,7 +455,7 @@

Feed Audit

? 'Data mode: live API (restore enabled)' : 'Data mode: live read-only (restore unavailable)'; meta.innerHTML = [ - 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T08:17:25.806Z') + '', + 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T15:22:20.804Z') + '', 'Low-health sources: ' + escapeHtml(currentEntries.length) + '', 'Pending suggestions: ' + escapeHtml(currentSuggestions.length) + '', 'SLA: deprioritised, auto-recheck 24h+', From efe5f2d8b97e83664115d1a974c67ce439ddf62c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:23:32 +0000 Subject: [PATCH 04/25] Enforce UNOCT keyword match and add source/day alert cap Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/e35a7380-f184-4b48-b5a2-eeba227f5f66 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 2 +- data/sources/international/oversight.json | 2 +- scripts/build-live-feed/alerts.mjs | 45 ++++++++++++++++++++--- tests/decision-logic.test.mjs | 36 ++++++++++++++++++ 4 files changed, 78 insertions(+), 7 deletions(-) diff --git a/data/sources.json b/data/sources.json index 94127acf..b784c3e2 100644 --- a/data/sources.json +++ b/data/sources.json @@ -1671,7 +1671,7 @@ "lane": "oversight", "region": "international", "isTrustedOfficial": true, - "requiresKeywordMatch": false, + "requiresKeywordMatch": true, "comment": "UNOCT news/articles page used as the current official listing for Counter-Terrorism updates.", "refreshEveryHours": 1 }, diff --git a/data/sources/international/oversight.json b/data/sources/international/oversight.json index 476945bd..81322be7 100644 --- a/data/sources/international/oversight.json +++ b/data/sources/international/oversight.json @@ -19,7 +19,7 @@ "lane": "oversight", "region": "international", "isTrustedOfficial": true, - "requiresKeywordMatch": false, + "requiresKeywordMatch": true, "comment": "UNOCT news/articles page used as the current official listing for Counter-Terrorism updates." }, { diff --git a/scripts/build-live-feed/alerts.mjs b/scripts/build-live-feed/alerts.mjs index 0d666dde..c8a95431 100644 --- a/scripts/build-live-feed/alerts.mjs +++ b/scripts/build-live-feed/alerts.mjs @@ -554,7 +554,32 @@ export function retentionScoreFor(alert) { export function selectStoredAlerts(items, maxStored) { if (!Array.isArray(items) || maxStored <= 0) return []; - if (items.length <= maxStored) return items.slice(); + const SOURCE_DAY_ALERT_CAP = 2; + + function sourceDayKeyFor(item) { + const source = clean(item?.source || item?.actor || item?.subject || '').toLowerCase(); + if (!source) return ''; + const publishedAt = clean(item?.publishedAt || ''); + if (!publishedAt) return ''; + const parsed = new Date(publishedAt); + if (Number.isNaN(parsed.getTime())) return ''; + return `${source}|${parsed.toISOString().slice(0, 10)}`; + } + + function applySourceDayCap(candidates, maxPerSourceDay) { + const sourceDayCounts = new Map(); + const kept = []; + for (const item of candidates) { + const sourceDayKey = sourceDayKeyFor(item); + const sourceDayCount = sourceDayKey ? (sourceDayCounts.get(sourceDayKey) || 0) : 0; + if (sourceDayKey && sourceDayCount >= maxPerSourceDay) continue; + kept.push(item); + if (sourceDayKey) sourceDayCounts.set(sourceDayKey, sourceDayCount + 1); + } + return kept; + } + + if (items.length <= maxStored) return applySourceDayCap(items, SOURCE_DAY_ALERT_CAP); const ranked = items .map((item, index) => ({ @@ -570,6 +595,7 @@ export function selectStoredAlerts(items, maxStored) { const retainedIndices = new Set(); const fusedCounts = new Map(); const sourceUrlCounts = new Map(); + const sourceDayCounts = new Map(); function fusedKeyFor(item) { return clean(item?.fusedIncidentId || item?.sourceUrl || item?.id || ''); @@ -579,39 +605,48 @@ export function selectStoredAlerts(items, maxStored) { return clean(item?.sourceUrl || item?.id || ''); } - function canTake(entry, maxPerFused, maxPerSource) { + function sourceDayKeyForEntry(item) { + return sourceDayKeyFor(item); + } + + function canTake(entry, maxPerFused, maxPerSource, maxPerSourceDay) { const fusedKey = fusedKeyFor(entry.item); const sourceKey = sourceKeyFor(entry.item); + const sourceDayKey = sourceDayKeyForEntry(entry.item); const fusedCount = fusedKey ? (fusedCounts.get(fusedKey) || 0) : 0; const sourceCount = sourceKey ? (sourceUrlCounts.get(sourceKey) || 0) : 0; + const sourceDayCount = sourceDayKey ? (sourceDayCounts.get(sourceDayKey) || 0) : 0; if (fusedKey && fusedCount >= maxPerFused) return false; if (sourceKey && sourceCount >= maxPerSource) return false; + if (sourceDayKey && sourceDayCount >= maxPerSourceDay) return false; return true; } function take(entry) { const fusedKey = fusedKeyFor(entry.item); const sourceKey = sourceKeyFor(entry.item); + const sourceDayKey = sourceDayKeyForEntry(entry.item); retainedIndices.add(entry.index); if (fusedKey) fusedCounts.set(fusedKey, (fusedCounts.get(fusedKey) || 0) + 1); if (sourceKey) sourceUrlCounts.set(sourceKey, (sourceUrlCounts.get(sourceKey) || 0) + 1); + if (sourceDayKey) sourceDayCounts.set(sourceDayKey, (sourceDayCounts.get(sourceDayKey) || 0) + 1); } for (const entry of ranked) { if (retainedIndices.size >= maxStored) break; - if (canTake(entry, 1, 1)) take(entry); + if (canTake(entry, 1, 1, SOURCE_DAY_ALERT_CAP)) take(entry); } for (const entry of ranked) { if (retainedIndices.size >= maxStored) break; if (retainedIndices.has(entry.index)) continue; - if (canTake(entry, 2, 1)) take(entry); + if (canTake(entry, 2, 1, SOURCE_DAY_ALERT_CAP)) take(entry); } for (const entry of ranked) { if (retainedIndices.size >= maxStored) break; if (retainedIndices.has(entry.index)) continue; - if (canTake(entry, 2, 2)) take(entry); + if (canTake(entry, 2, 2, SOURCE_DAY_ALERT_CAP)) take(entry); } return items.filter((_, index) => retainedIndices.has(index)); diff --git a/tests/decision-logic.test.mjs b/tests/decision-logic.test.mjs index 0b8b2c6f..f670f9ae 100644 --- a/tests/decision-logic.test.mjs +++ b/tests/decision-logic.test.mjs @@ -908,6 +908,42 @@ test('stored alert selection keeps live incidents and fresh official corroborati assert.ok(retentionScoreFor(freshOfficialContext) > retentionScoreFor(staleWeakContext)); }); +test('stored alert selection caps source output to two alerts per day', () => { + const source = 'UN Office of Counter-Terrorism (UNOCT) - News'; + const unoct1 = makeAlert({ + id: 'unoct-1', + source, + sourceUrl: 'https://example.test/unoct-1', + publishedAt: '2026-04-24T10:49:55.000Z', + priorityScore: 9 + }); + const unoct2 = makeAlert({ + id: 'unoct-2', + source, + sourceUrl: 'https://example.test/unoct-2', + publishedAt: '2026-04-24T09:49:55.000Z', + priorityScore: 8 + }); + const unoct3 = makeAlert({ + id: 'unoct-3', + source, + sourceUrl: 'https://example.test/unoct-3', + publishedAt: '2026-04-24T08:49:55.000Z', + priorityScore: 7 + }); + const other = makeAlert({ + id: 'other-1', + source: 'Counter Terrorism Policing', + sourceUrl: 'https://example.test/other-1', + publishedAt: '2026-04-24T07:49:55.000Z', + priorityScore: 6 + }); + + const selected = selectStoredAlerts([unoct1, unoct2, unoct3, other], 10); + + assert.deepEqual(selected.map((alert) => alert.id), ['unoct-1', 'unoct-2', 'other-1']); +}); + test('shouldKeepItem rejects items without a reliable publish date', () => { const source = { lane: 'context', From 6be03a0e77bf85a07493ff66d07a4d0d48446d72 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:24:06 +0000 Subject: [PATCH 05/25] Revert unrelated generated artifact changes Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/e35a7380-f184-4b48-b5a2-eeba227f5f66 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2252800 -> 2252800 bytes data/quarantined-sources.json | 18772 ++++++++++++++++++++- data/source-remediation-sweep.json | 123 +- data/top-20-source-remediation.json | 58 +- live-alerts.json | 22784 +++++++++++++++++++++++++- source-quarantine.html | 12 +- 6 files changed, 41499 insertions(+), 250 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index 528082203a68f67b49eb71767ad74d0c55f95e97..b13185dfa065db2f8edab7231a8e72c2aa5bdc03 100644 GIT binary patch delta 330 zcmWO0ze@sP9LI6LKKFQ@=Z`zHG_|^<9B$Gfp)eYRXi}jyvWUWv6wVBy<%US2rEs_@ z=hh5*YKw4)hM>_PusLXemW-`E)!I{N*1VgyLDEIA4G{|-OWbJ+S#pG zt$L-p-#lzs#|73aOGCPFc!o;OMuuL!e2%;5o~}hYOGC-oHuzG7wAAMhAx|)`YInMQBZ>YGt8@D5==P`3e%UvN0$P}f;(Ds*{|7^Hc%1+M delta 1915 zcmb7_-*4Jh6vwd*Hf|t43e7LF#;KG}&^o%9AE_az+R&m_s+w#?n$}6n9JmlSiJjRd zNjGhdHAJ+h{dz##->`?Sd!T)5t2|VFsMN>qsqcHL)VFEXj-fULLDpUIdEs8}`F_v2 z=Wy`gJK_NNAwq2ZIFl!~e*e6_GObP!RGie+s#e5nT2)!wkaa`VZs(c1tKJvH_YEH+ zR{ZpJI!@oBziku{@uYb^PQ36E3qOw?#LO8gOP1w*qpD&4maZ!Nj)r%!V#umOUW`zp zyD1s!Hm~ktO_wVh26fnY?PAu0=zO;%vwdI$2O@3-!A)?WDQ6aYSBqlGW1aZo}Dr zN=_0Ypz;2enxlVHFNwzF5fL`SwF@CpoE?zJ<0W?_t~hU?CDDBm_Tm4l(H!&xD^QDt z5~;`useAL@998-D^J{5(v-RIei@sI8?JOTIy`}&!-~(uY0sH_9oC1b`01yO*fe~O7 z7z0iNAs`H#0mgv|U=o-Drhy1B1H98*dVTisvvHQ$^o)dumxGrBSBB=)c1U0=MX$hLY{Die%3aY0D{4Py0EN zQL=!>!5^U`dme3cUFD+d~jnHFXC& z20K^UItdmjVA=LS6!Yo;J zX4I2w%{msAJ@1^Gdq>rPDm(Ie^53bJJ^nti>NLc$JFXoBB0-$SH}hfI>=}tpoUWno z#OU9Il2!M?<*hmMwkEpDh~V$W32;2eP>FUS?9*#j-3w7*-Zs9N4~LddQ0xx0aX0rJRJ0{{R3 diff --git a/data/quarantined-sources.json b/data/quarantined-sources.json index b9e60a32..a6abc8f9 100644 --- a/data/quarantined-sources.json +++ b/data/quarantined-sources.json @@ -1,14 +1,18772 @@ { - "generatedAt": "2026-04-24T15:22:20.804Z", - "count": 0, + "generatedAt": "2026-04-24T08:17:25.806Z", + "count": 529, "metrics": { - "total": 0, - "newThisWeek": 0, - "avgTimeInQuarantineHours": 0, - "avgHealthScore": 0, + "total": 529, + "newThisWeek": 231, + "avgTimeInQuarantineHours": 153, + "avgHealthScore": 3, "reQuarantineRate": 0, "reQuarantined": 0, "restoredTotal": 0 }, - "sources": [] + "sources": [ + { + "id": "euaa-news", + "provider": "EUAA (EU Agency for Asylum) - Press Releases", + "endpoint": "https://euaa.europa.eu/news-events/press-releases", + "kind": "html", + "lane": "border", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eulisa-news-events", + "provider": "eu-LISA - News and Events (RSS)", + "endpoint": "https://www.eulisa.europa.eu/news-and-events.rss", + "kind": "rss", + "lane": "border", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "austria-interior-ministry-news", + "provider": "Austrian Interior Ministry - News", + "endpoint": "https://www.bmi.gv.at/news.aspx", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 503", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-24T08:17:25.806Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T08:17:25.806Z", + "lastFailureAt": "2026-04-24T08:17:25.806Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "austria-interior-ministry-rss-index", + "provider": "Austrian Interior Ministry - RSS Index", + "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 503", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-24T08:17:25.806Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T08:17:25.806Z", + "lastFailureAt": "2026-04-24T08:17:25.806Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "europol-news-rss", + "provider": "Europol - Newsroom (RSS)", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news", + "kind": "rss", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "dutch-police-rss-index", + "provider": "Politie.nl - RSS", + "endpoint": "https://www.politie.nl/rss", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "mossos-news", + "provider": "Mossos d'Esquadra - News", + "endpoint": "https://mossos.gencat.cat/ca/actualitat/", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eppo-news-node-7", + "provider": "European Public Prosecutor's Office - News (RSS)", + "endpoint": "https://www.eppo.europa.eu/en/news.xml", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-commission-counter-terrorism-measures-2026", + "provider": "European Commission - Counter Terrorism Measures 2026", + "endpoint": "https://commission.europa.eu/news-and-media/news/commission-proposes-new-measures-prevent-and-counter-terrorism-2026-02-26_en", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-commission-home-affairs-topic", + "provider": "European Commission - Home Affairs", + "endpoint": "https://commission.europa.eu/topics/home-affairs_en", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-council-jha-register-rss", + "provider": "Council of the EU - Latest Documents RSS", + "endpoint": "https://www.consilium.europa.eu/en/register/rss/LD.xml", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-council-press-releases", + "provider": "Council of the European Union a Press Releases (RSS)", + "endpoint": "https://www.consilium.europa.eu/en/rss/pressreleases.ashx", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-council-press-releases-html", + "provider": "Council of the EU - Press Releases", + "endpoint": "https://www.consilium.europa.eu/en/press/press-releases/", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-eppo-news", + "provider": "European Public Prosecutor's Office - News", + "endpoint": "https://www.eppo.europa.eu/en/news", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-home-affairs-news", + "provider": "European Commission a Home Affairs News", + "endpoint": "https://home-affairs.ec.europa.eu/news_en", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-olaf-news", + "provider": "OLAF (EU Anti-Fraud Office) a News", + "endpoint": "https://anti-fraud.ec.europa.eu/media-corner/news_en", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-security-union-strategy", + "provider": "European Commission a Security Union Strategy", + "endpoint": "https://home-affairs.ec.europa.eu/policies/internal-security_en", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "europarl-committee-libe", + "provider": "European Parliament - LIBE Press Releases", + "endpoint": "https://www.europarl.europa.eu/committees/en/libe/home/press-releases", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "europarl-committee-sede", + "provider": "European Parliament - SEDE Press Releases", + "endpoint": "https://www.europarl.europa.eu/committees/en/sede/home/press-releases", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "europarl-pressreleases-committees", + "provider": "European Parliament a Press Releases (Committees) (RSS)", + "endpoint": "https://www.europarl.europa.eu/rss/doc/press-releases-committees/en.xml", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "netherlands-police-news", + "provider": "Dutch National Police - News (EN)", + "endpoint": "https://www.politie.nl/en/news", + "kind": "html", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "echr-press-releases-rss", + "provider": "European Court of Human Rights - Press Releases RSS", + "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echrengpress&query=contentsitename%3AECHR+AND+doctype%3DPR&ranking. Model. Id=11111111-0000-0000-0000-000000000000&sort=kpdate+Descending&start=0", + "kind": "rss", + "lane": "oversight", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "french-justice-ministry-news", + "provider": "French Ministry of Justice - News", + "endpoint": "https://www.justice.gouv.fr/actualites", + "kind": "html", + "lane": "oversight", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "dsn-at-english", + "provider": "DSN Austria - Aktuelles", + "endpoint": "https://www.dsn.gv.at/news.html", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "sapo-se-english", + "provider": "Swedish Security Service English news", + "endpoint": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/press-room/news.html", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "interpol-news-events", + "provider": "INTERPOL a News and Events", + "endpoint": "https://www.interpol.int/News-and-Events", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "osce-press-releases", + "provider": "OSCE a Press Releases", + "endpoint": "https://www.osce.org/press-releases", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "unoct-news", + "provider": "UN Office of Counter-Terrorism (UNOCT) - News", + "endpoint": "https://www.un.org/counterterrorism/news", + "kind": "html", + "lane": "oversight", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "bexley-council-news", + "provider": "Bexley Council a News", + "endpoint": "https://www.bexley.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "brent-council-news", + "provider": "Brent Council a News", + "endpoint": "https://www.brent.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "camden-council-news", + "provider": "Camden Council a News", + "endpoint": "https://news.camden.gov.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "chelsea-westminster-news", + "provider": "Chelsea and Westminster Hospital NHS Foundation Trust a News", + "endpoint": "https://www.chelwest.nhs.uk/about-us/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "croydon-council-news", + "provider": "Croydon Council a News", + "endpoint": "https://news.croydon.gov.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gosh-news", + "provider": "Great Ormond Street Hospital a News", + "endpoint": "https://www.gosh.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "guys-st-thomas-news", + "provider": "Guy's and St Thomas' NHS Foundation Trust a News", + "endpoint": "https://www.guysandstthomas.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "hackney-council-news", + "provider": "Hackney Council a News", + "endpoint": "https://news.hackney.gov.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "havering-council-news", + "provider": "Havering Council a News", + "endpoint": "https://www.havering.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "hillingdon-council-news", + "provider": "Hillingdon Council a News", + "endpoint": "https://www.hillingdon.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "hounslow-council-news", + "provider": "Hounslow Council a News", + "endpoint": "https://www.hounslow.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "islington-council-news", + "provider": "Islington Council a News", + "endpoint": "https://www.islington.media/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "kings-college-hospital-news", + "provider": "King's College Hospital NHS Foundation Trust a News", + "endpoint": "https://www.kch.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "lambeth-council-news", + "provider": "Lambeth Council a News", + "endpoint": "https://love.lambeth.gov.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "lnwh-news", + "provider": "London North West University Healthcare NHS Trust a News", + "endpoint": "https://www.lnwh.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "london-gov-rss-80603", + "provider": "Greater London Authority a RSS Feed 80603", + "endpoint": "https://www.london.gov.uk/rss-feeds/80603", + "kind": "rss", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "london-gov-rss-80632", + "provider": "Greater London Authority a RSS Feed 80632", + "endpoint": "https://www.london.gov.uk/rss-feeds/80632", + "kind": "rss", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "met-police-the-met-tag", + "provider": "Metropolitan Police - The Met Tag", + "endpoint": "https://news.met.police.uk/news/tag/the-met", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "moorfields-news", + "provider": "Moorfields Eye Hospital NHS Foundation Trust a News", + "endpoint": "https://www.moorfields.nhs.uk/about-us/news-and-blogs/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "nelft-news", + "provider": "North East London NHS Foundation Trust a News", + "endpoint": "https://www.nelft.nhs.uk/news-events/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "newham-council-news", + "provider": "Newham Council a News", + "endpoint": "https://www.newham.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "nhs-london-nwl-news", + "provider": "NHS North West London a News", + "endpoint": "https://www.nwlondonicb.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "oxleas-news", + "provider": "Oxleas NHS Foundation Trust a News", + "endpoint": "https://oxleas.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "redbridge-council-news", + "provider": "Redbridge Council a News", + "endpoint": "https://www.redbridge.gov.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "st-georges-news", + "provider": "St George's University Hospitals NHS Foundation Trust a News", + "endpoint": "https://www.stgeorges.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "sutton-council-news", + "provider": "Sutton Council a News", + "endpoint": "https://www.sutton.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "swlstg-news", + "provider": "South West London and St George's Mental Health NHS Trust a News", + "endpoint": "https://www.swlstg.nhs.uk/latest-news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "waltham-forest-council-news", + "provider": "Waltham Forest Council a News", + "endpoint": "https://www.walthamforest.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-fcdo-travel-advice", + "provider": "FCDO a Foreign Travel Advice Index", + "endpoint": "https://www.gov.uk/foreign-travel-advice", + "kind": "html", + "lane": "border", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "uk-border-force", + "provider": "Border Force (UK) a Announcements and Publications", + "endpoint": "https://www.gov.uk/government/organisations/border-force", + "kind": "html", + "lane": "border", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "uk-ukvi", + "provider": "UK Visas and Immigration a Announcements and Publications", + "endpoint": "https://www.gov.uk/government/organisations/uk-visas-and-immigration", + "kind": "html", + "lane": "border", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-terrorism-search", + "provider": "GOV.UK Search - Terrorism", + "endpoint": "https://www.gov.uk/search/all?keywords=terrorism", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "npcc-releases", + "provider": "National Police Chiefs' Council - Releases", + "endpoint": "https://news.npcc.police.uk/releases/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "police-uk-stops-force-leicestershire", + "provider": "Police.uk - Force Stops (Leicestershire)", + "endpoint": "https://data.police.uk/api/stops-force?force=leicestershire", + "kind": "json", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "police-uk-stops-street-leicester", + "provider": "Police.uk - Street Stops Around Leicester", + "endpoint": "https://data.police.uk/api/stops-street?lat=52.629729&lng=-1.131592", + "kind": "json", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "foreign-office-blogs", + "provider": "Foreign Office Blogs", + "endpoint": "https://blogs.fco.gov.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "avon-and-somerset-police-news-html", + "provider": "Avon and Somerset Police - News", + "endpoint": "https://www.avonandsomerset.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "avon-somerset-police-news", + "provider": "Avon & Somerset Police a News", + "endpoint": "https://www.avonandsomerset.police.uk/newsroom/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "psni-latest-news", + "provider": "Police Service of Northern Ireland - Latest News", + "endpoint": "https://www.psni.police.uk/latest-news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-yorkshire-police-all-rss", + "provider": "West Yorkshire Police - All Feed", + "endpoint": "https://www.westyorkshire.police.uk/news/all/feed", + "kind": "rss", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-yorkshire-police-appeals-rss", + "provider": "West Yorkshire Police - Appeals Feed", + "endpoint": "https://www.westyorkshire.police.uk/news/appeals/feed", + "kind": "rss", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-yorkshire-police-news-appeals", + "provider": "West Yorkshire Police - News Appeals", + "endpoint": "https://www.westyorkshirepolice.co.uk/news-appeals", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-yorkshire-police-news-rss", + "provider": "West Yorkshire Police - News Feed", + "endpoint": "https://www.westyorkshire.police.uk/news/feed", + "kind": "rss", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-yorkshire-police-releases-rss", + "provider": "West Yorkshire Police - Releases Feed", + "endpoint": "https://www.westyorkshire.police.uk/news/releases/feed", + "kind": "rss", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "attorney-generals-office-html", + "provider": "Attorney General's Office", + "endpoint": "https://www.gov.uk/government/organisations/attorney-generals-office", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "cabinet-office-html", + "provider": "Cabinet Office", + "endpoint": "https://www.gov.uk/government/organisations/cabinet-office", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "crown-office-news", + "provider": "Crown Office and Procurator Fiscal Service - News", + "endpoint": "https://www.copfs.gov.uk/about-copfs/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "echr-uk-grand-chamber-rss", + "provider": "European Court of Human Rights - UK Grand Chamber RSS", + "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echreng&query=%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28+contentsitename%3AECHR+AND+%28NOT+%28doctype%3DPR+OR+doctype%3DHFCOMOLD+OR+doctype%3DHECOMOLD%29%29+AND+%28%28respondent%3D%22GBR%22%29%29+AND+%28%28documentcollectionid%3D%22GRANDCHAMBER%22%29%29%29+XRANK%28cb%3D14%29+doctypebranch%3AGRANDCHAMBER%29+XRANK%28cb%3D13%29+doctypebranch%3ADECGRANDCHAMBER%29+XRANK%28cb%3D12%29+doctypebranch%3ACHAMBER%29+XRANK%28cb%3D11%29+doctypebranch%3AADMISSIBILITY%29+XRANK%28cb%3D10%29+doctypebranch%3ACOMMITTEE%29+XRANK%28cb%3D9%29+doctypebranch%3AADMISSIBILITYCOM%29+XRANK%28cb%3D8%29+doctypebranch%3ADECCOMMISSION%29+XRANK%28cb%3D7%29+doctypebranch%3ACOMMUNICATEDCASES%29+XRANK%28cb%3D6%29+doctypebranch%3ACLIN%29+doctypebranch%3AADVISORYOPINIONS%29+doctypebranch%3AREPORTS%29+doctypebranch%3AEXECUTION%29+doctypebranch%3AMERITS%29+doctypebranch%3ASCREENINGPANEL%29+XRANK%28cb%3D4%29+importance%3A1%29+XRANK%28cb%3D3%29+importance%3A2%29+XRANK%28cb%3D2%29+importance%3A3%29+XRANK%28cb%3D1%29+importance%3A4%29+XRANK%28cb%3D2%29+languageisocode%3AENG%29+XRANK%28cb%3D1%29+languageisocode%3AFRE&ranking. Model. Id=4180000c-8692-45ca-ad63-74bc4163871b&sort=kpdate+Descending&start=0", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "extremism-commission-blog", + "provider": "Commission for Countering Extremism - Blog", + "endpoint": "https://extremismcommission.blog.gov.uk/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "fcdo-html", + "provider": "Foreign, Commonwealth & Development Office", + "endpoint": "https://www.gov.uk/government/organisations/foreign-commonwealth-development-office", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-scot-access-to-justice-latest", + "provider": "Scottish Government - Access to Justice Latest", + "endpoint": "https://www.gov.scot/policies/access-to-justice/latest/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-cabinet-office-atom", + "provider": "Cabinet Office a GOV.UK Atom Feed", + "endpoint": "https://www.gov.uk/government/organisations/cabinet-office.atom", + "kind": "atom", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-hmcts", + "provider": "HMCTS a Courts and Tribunals Announcements", + "endpoint": "https://www.gov.uk/government/organisations/hm-courts-and-tribunals-service", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-home-office-atom", + "provider": "UK Home Office a Atom Feed", + "endpoint": "https://www.gov.uk/government/organisations/home-office.atom", + "kind": "atom", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-ipco", + "provider": "Investigatory Powers Commissioner's Office a GOV.UK", + "endpoint": "https://www.ipco.org.uk/publications/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-mod-atom", + "provider": "Ministry of Defence a GOV.UK Atom Feed", + "endpoint": "https://www.gov.uk/government/organisations/ministry-of-defence.atom", + "kind": "atom", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-moj-atom", + "provider": "Ministry of Justice a GOV.UK Atom Feed", + "endpoint": "https://www.gov.uk/government/organisations/ministry-of-justice.atom", + "kind": "atom", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-news-and-communications-atom", + "provider": "GOV.UK - News and Communications Atom", + "endpoint": "https://www.gov.uk/search/news-and-communications.atom", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "hmiprisons-news", + "provider": "HM Inspectorate of Prisons - News", + "endpoint": "https://hmiprisons.justiceinspectorates.gov.uk/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "hmiprobation-news", + "provider": "HM Inspectorate of Probation - News", + "endpoint": "https://hmiprobation.justiceinspectorates.gov.uk/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "home-office-media-blog", + "provider": "Home Office Media Blog", + "endpoint": "https://homeofficemedia.blog.gov.uk/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "independent-reviewer-terrorism-legislation", + "provider": "Independent Reviewer of Terrorism Legislation a Reports", + "endpoint": "https://terrorismlegislationreviewer.independent.gov.uk/category/reports/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "independent-reviewer-terrorism-legislation-html", + "provider": "Independent Reviewer of Terrorism Legislation", + "endpoint": "https://www.gov.uk/government/organisations/independent-reviewer-of-terrorism-legislation", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "judiciary-rss-feeds-page", + "provider": "Judiciary UK - RSS Feeds", + "endpoint": "https://www.judiciary.uk/rss-feeds/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "judiciary-uk-announcements-feed", + "provider": "Judiciary UK - Announcements Feed", + "endpoint": "https://www.judiciary.uk/announcements/feed/", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "judiciary-uk-judgments-feed", + "provider": "Judiciary UK - Judgments Feed", + "endpoint": "https://www.judiciary.uk/judgments/feed/", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "judiciary-uk-publications-feed", + "provider": "Judiciary UK - Publications Feed", + "endpoint": "https://www.judiciary.uk/publications/feed/", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "ministry-of-defence-html", + "provider": "Ministry of Defence", + "endpoint": "https://www.gov.uk/government/organisations/ministry-of-defence", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "ons-html", + "provider": "Office for National Statistics", + "endpoint": "https://www.gov.uk/government/organisations/office-for-national-statistics", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "parliament-all-bills-rss", + "provider": "Parliament - All Bills RSS", + "endpoint": "https://bills.parliament.uk/rss/allbills.rss", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "parliament-private-bills-rss", + "provider": "Parliament - Private Bills RSS", + "endpoint": "https://bills.parliament.uk/rss/privatebills.rss", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "parliament-public-bills-rss", + "provider": "Parliament - Public Bills RSS", + "endpoint": "https://bills.parliament.uk/rss/publicbills.rss", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "police-uk-crime-categories-2024-01", + "provider": "Police.uk - Crime Categories (2024-01)", + "endpoint": "https://data.police.uk/api/crime-categories?date=2024-01", + "kind": "json", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "police-uk-crimes-street-dates", + "provider": "Police.uk - Street Crime Dataset Dates", + "endpoint": "https://data.police.uk/api/crimes-street-dates", + "kind": "json", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "police-uk-outcomes-for-crime-e11dade0", + "provider": "Police.uk - Outcomes For Crime e11dade0", + "endpoint": "https://data.police.uk/api/outcomes-for-crime/e11dade0a92a912d12329b9b2abb856ac9520434ad6845c30f503e9901d140f1", + "kind": "json", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-fai-determinations-rss", + "provider": "Scottish Courts - Fatal Accident Inquiry Determinations RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Fatal. Accident. Inquiry. Determinations", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-fai-hearings-rss", + "provider": "Scottish Courts - Fatal Accident Inquiry Hearings RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Fatal. Accident. Inquiry. Hearings", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-high-court-justiciary-judgments-rss", + "provider": "Scottish Courts - High Court of Justiciary Judgments RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Judgments/?Court=High+Court+of+Justiciary", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-high-court-practice-notes-rss", + "provider": "Scottish Courts - High Court of Justiciary Practice Notes RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Practice. Notes. And. Directions/?Category=High+Court+of+Justiciary", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-judgments-rss", + "provider": "Scottish Courts - Judgments RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Judgments", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-news-articles-rss", + "provider": "Scottish Courts - News Articles RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/News. Articles", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-publications-rss", + "provider": "Scottish Courts - Publications RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Publications", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "scotcourts-sheriff-criminal-practice-notes-rss", + "provider": "Scottish Courts - Sheriff Court Criminal Practice Notes RSS", + "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Practice. Notes. And. Directions/?Category=Sheriff+Court+Criminal", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "uk-iopc-news", + "provider": "Independent Office for Police Conduct a News", + "endpoint": "https://www.policeconduct.gov.uk/news", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "uk-parliament-home-affairs-committee", + "provider": "UK Parliament a Home Affairs Committee (News)", + "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-24T08:17:25.806Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T08:17:25.806Z", + "lastFailureAt": "2026-04-24T08:17:25.806Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "act-campaign", + "provider": "ACT Awareness Campaign", + "endpoint": "https://act.campaign.gov.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-contest-strategy", + "provider": "GOV.UK a CONTEST Counter-Terrorism Strategy", + "endpoint": "https://www.gov.uk/government/collections/contest", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-prevent-strategy", + "provider": "UK Home Office - Prevent duty guidance", + "endpoint": "https://www.gov.uk/government/publications/prevent-duty-guidance", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "met-office-seasonal-advice", + "provider": "Met Office - Seasonal Advice", + "endpoint": "https://www.metoffice.gov.uk/weather/warnings-and-advice/seasonal-advice", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "mi5-uk-threat-level", + "provider": "MI5 (Security Service) a UK Threat Level", + "endpoint": "https://www.mi5.gov.uk/UKThreat. Level/UKThreat. Level.xml", + "kind": "rss", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "npsa-national-protective-security-authority", + "provider": "NPSA - Activity on GOV.UK", + "endpoint": "https://www.gov.uk/government/organisations/national-protective-security-authority.atom", + "kind": "rss", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "uk-ncsc-all-rss", + "provider": "UK NCSC - All Updates RSS", + "endpoint": "https://www.ncsc.gov.uk/api/1/services/v1/all-rss-feed.xml", + "kind": "rss", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "uk-prevent-duty-guidance", + "provider": "GOV.UK a Prevent Duty Guidance (Collection)", + "endpoint": "https://www.gov.uk/government/collections/prevent-duty-guidance", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-proscribed-terrorist-orgs", + "provider": "GOV.UK a Proscribed Terrorist Organisations", + "endpoint": "https://www.gov.uk/government/publications/proscribed-terror-groups-or-organisations--2", + "kind": "html", + "lane": "sanctions", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "hm-treasury-html", + "provider": "HM Treasury", + "endpoint": "https://www.gov.uk/government/organisations/hm-treasury", + "kind": "html", + "lane": "sanctions", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "ofsi-blog-home", + "provider": "OFSI - Blog", + "endpoint": "https://ofsi.blog.gov.uk/", + "kind": "html", + "lane": "sanctions", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "dhs-press-releases", + "provider": "US Department of Homeland Security - News", + "endpoint": "https://www.dhs.gov/news", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "nsa-cybersecurity-news", + "provider": "NSA - Cybersecurity Advisories & Guidance", + "endpoint": "https://www.nsa.gov/Press-Room/Press-Releases-Statements/", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "rewards-for-justice", + "provider": "U.S. Department of State - Rewards for Justice", + "endpoint": "https://rewardsforjustice.net/rewards/", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "state-dept-terrorism", + "provider": "US State Department - Bureau of Counterterrorism", + "endpoint": "https://www.state.gov/bureaus-offices/under-secretary-for-civilian-security-democracy-and-human-rights/bureau-of-counterterrorism/", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "cisa-cybersecurity-advisories", + "provider": "CISA - Cybersecurity Alerts & Advisories", + "endpoint": "https://www.cisa.gov/news-events/cybersecurity-advisories", + "kind": "html", + "lane": "oversight", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "us-treasury-ofac-recent-actions", + "provider": "U.S. Treasury (OFAC) - Recent Actions", + "endpoint": "https://ofac.treasury.gov/recent-actions", + "kind": "html", + "lane": "sanctions", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "a-lady-in-london", + "provider": "A Lady in London", + "endpoint": "https://www.aladyinlondon.com/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-24T03:29:13.488Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T03:29:13.488Z", + "lastFailureAt": "2026-04-24T03:29:13.488Z", + "lastCheckedAt": "2026-04-24T03:29:13.488Z" + }, + { + "id": "north-wales-community-alert", + "provider": "North Wales Community Alert", + "endpoint": "https://www.northwalescommunityalert.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 429", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-17T05:46:58.069Z" + }, + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-20T23:15:54.554Z" + }, + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-24T03:29:13.488Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-05-01T03:29:13.488Z", + "lastFailureAt": "2026-04-24T03:29:13.488Z", + "lastCheckedAt": "2026-04-24T03:29:13.488Z" + }, + { + "id": "eurojust-press-releases", + "provider": "Eurojust - Press Releases", + "endpoint": "https://www.eurojust.europa.eu/news/press-releases", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "eu-council-jha-meetings", + "provider": "Council of the EU - JHA Press Releases", + "endpoint": "https://www.consilium.europa.eu/en/press/press-releases/?cc%5B%5D=24", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "norway-pst-news", + "provider": "Norwegian Government - News and Press Releases", + "endpoint": "https://www.regjeringen.no/en/whats-new/news-and-press-releases/id4/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "ocam-be-english", + "provider": "CUTA (Belgium) threat analysis", + "endpoint": "https://cuta.belgium.be/", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T22:54:57.851Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "everything-zany", + "provider": "Everything Zany", + "endpoint": "https://everythingzany.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "manic-mum-life", + "provider": "Manic Mum Life", + "endpoint": "https://www.manic-mumdays.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "really-ree", + "provider": "Really Ree", + "endpoint": "https://reallyree.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T18:02:43.923Z", + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastCheckedAt": "2026-04-23T18:02:43.923Z" + }, + { + "id": "my-community-alert", + "provider": "My Community Alert", + "endpoint": "https://www.mycommunityalert.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-18T19:28:57.337Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T11:47:27.254Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T11:47:27.254Z", + "lastFailureAt": "2026-04-23T11:47:27.254Z", + "lastCheckedAt": "2026-04-23T11:47:27.254Z" + }, + { + "id": "uk-parliament-defence-committee", + "provider": "UK Parliament a Defence Select Committee", + "endpoint": "https://committees.parliament.uk/committee/24/defence-committee/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "curia-press-rss-en", + "provider": "Court of Justice of the European Union - RSS (EN/FR)", + "endpoint": "https://curia.europa.eu/site/rss.jsp?lang=en&second. Lang=fr", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + }, + { + "id": "eu-cellar-rss-atom", + "provider": "Publications Office of the European Union (CELLAR) a RSS/Atom Feeds", + "endpoint": "https://op.europa.eu/en/web/cellar/cellar-data/rss-and-atom-feeds", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + }, + { + "id": "richmond-council-news", + "provider": "Richmond Council a News", + "endpoint": "https://www.richmond.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + }, + { + "id": "wandsworth-council-news", + "provider": "Wandsworth Council a News", + "endpoint": "https://www.wandsworth.gov.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + }, + { + "id": "scotcourts-rss-feeds-page", + "provider": "Scottish Courts and Tribunals - RSS Feeds", + "endpoint": "https://www.scotcourts.gov.uk/rss-feeds/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + }, + { + "id": "london-resilience", + "provider": "Resilience First - Latest Updates", + "endpoint": "https://www.london.gov.uk/programmes-strategies/fire-and-city-resilience/london-resilience-partnership", + "kind": "html", + "lane": "prevention", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 2, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T23:15:54.554Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-22T23:56:26.571Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T23:56:26.571Z", + "lastFailureAt": "2026-04-22T23:56:26.571Z", + "lastCheckedAt": "2026-04-22T23:56:26.571Z" + }, + { + "id": "echr-key-judgments-rss", + "provider": "European Court of Human Rights - Key Judgments RSS", + "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echreng&query=%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28+contentsitename%3AECHR+AND+%28NOT+%28doctype%3DPR+OR+doctype%3DHFCOMOLD+OR+doctype%3DHECOMOLD%29%29+AND+%28%28importance%3D%221%22%29+OR+%28importance%3D%222%22%29+OR+%28importance%3D%223%22%29%29+AND+%28%28documentcollectionid%3D%22GRANDCHAMBER%22%29+OR+%28documentcollectionid%3D%22CHAMBER%22%29+OR+%28documentcollectionid%3D%22DECGRANDCHAMBER%22%29+OR+%28documentcollectionid%3D%22ADMISSIBILITY%22%29%29%29+XRANK%28cb%3D14%29+doctypebranch%3AGRANDCHAMBER%29+XRANK%28cb%3D13%29+doctypebranch%3ADECGRANDCHAMBER%29+XRANK%28cb%3D12%29+doctypebranch%3ACHAMBER%29+XRANK%28cb%3D11%29+doctypebranch%3AADMISSIBILITY%29+XRANK%28cb%3D10%29+doctypebranch%3ACOMMITTEE%29+XRANK%28cb%3D9%29+doctypebranch%3AADMISSIBILITYCOM%29+XRANK%28cb%3D8%29+doctypebranch%3ADECCOMMISSION%29+XRANK%28cb%3D7%29+doctypebranch%3ACOMMUNICATEDCASES%29+XRANK%28cb%3D6%29+doctypebranch%3ACLIN%29+XRANK%28cb%3D5%29+doctypebranch%3AADVISORYOPINIONS%29+XRANK%28cb%3D4%29+doctypebranch%3AREPORTS%29+XRANK%28cb%3D3%29+doctypebranch%3AEXECUTION%29+XRANK%28cb%3D2%29+doctypebranch%3AMERITS%29+XRANK%28cb%3D1%29+doctypebranch%3ASCREENINGPANEL%29+XRANK%28cb%3D4%29+importance%3A1%29+XRANK%28cb%3D3%29+importance%3A2%29+XRANK%28cb%3D2%29+importance%3A3%29+XRANK%28cb%3D1%29+importance%3A4%29+XRANK%28cb%3D2%29+languageisocode%3AENG%29+XRANK%28cb%3D1%29+languageisocode%3AFRE&ranking. Model. Id=4180000c-8692-45ca-ad63-74bc4163871b&sort=kpdate+Descending&start=0", + "kind": "rss", + "lane": "oversight", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 400", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T17:39:27.641Z", + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastCheckedAt": "2026-04-22T17:39:27.641Z" + }, + { + "id": "judiciary-uk-news", + "provider": "Judiciary of England and Wales a News", + "endpoint": "https://www.judiciary.uk/feed/", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T11:44:44.316Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T16:17:11.443Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T16:17:11.443Z", + "lastFailureAt": "2026-04-22T16:17:11.443Z", + "lastCheckedAt": "2026-04-22T16:17:11.443Z" + }, + { + "id": "uclh-news", + "provider": "University College London Hospitals a News", + "endpoint": "https://www.uclh.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "west-yorkshire-police-coroner-appeals-rss", + "provider": "West Yorkshire Police - Coroner Appeals Feed", + "endpoint": "https://www.westyorkshire.police.uk/news/coroner-appeals/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "thank-you-for-the-days", + "provider": "Thank you for the days", + "endpoint": "https://thankyouforthedays.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 2, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "west-yorkshire-police-news", + "provider": "West Yorkshire Police a News", + "endpoint": "https://www.westyorkshire.police.uk/news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nhs-london-nel-news", + "provider": "NHS North East London a News", + "endpoint": "https://northeastlondon.icb.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T10:07:46.576Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-28T10:07:46.576Z", + "lastFailureAt": "2026-04-21T10:07:46.576Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "kingston-council-news", + "provider": "Kingston Council a News", + "endpoint": "https://www.kingston.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-28T08:24:19.478Z", + "lastFailureAt": "2026-04-21T08:24:19.478Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "merton-council-news", + "provider": "Merton Council a News", + "endpoint": "https://www.merton.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-28T08:24:19.478Z", + "lastFailureAt": "2026-04-21T08:24:19.478Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "cambridge-news", + "provider": "Cambridge News", + "endpoint": "https://www.cambridge-news.co.uk/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-20T17:16:47.386Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T17:16:47.386Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastCheckedAt": "2026-04-23T22:53:56.180Z" + }, + { + "id": "deadline-news", + "provider": "Deadline News", + "endpoint": "https://www.deadlinenews.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 20 after repeated failures", + "quarantinedAt": "2026-04-20T17:16:47.386Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 500", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T17:16:47.386Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastCheckedAt": "2026-04-24T03:29:13.488Z" + }, + { + "id": "independent-top-stories", + "provider": "The Independent - Top Stories", + "endpoint": "https://www.independent.co.uk/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T17:16:47.386Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastCheckedAt": "2026-04-23T20:18:46.625Z" + }, + { + "id": "fmcg-gurus", + "provider": "FMCG Gurus", + "endpoint": "https://fmcggurus.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-20T17:16:47.386Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T17:16:47.386Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "portugal-pj-news", + "provider": "Policia Judiciaria Portugal - News", + "endpoint": "https://www.policiajudiciaria.pt/noticias/", + "kind": "html", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T19:18:33.309Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T15:59:44.503Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T15:59:44.503Z", + "lastFailureAt": "2026-04-20T15:59:44.503Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "guardian-uk-top-stories", + "provider": "The Guardian - UK Top Stories", + "endpoint": "https://www.theguardian.com/uk/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-20T06:30:13.977Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "consecutiveFailures": 3, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T23:43:16.267Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "silly-old-sod", + "provider": "Silly Old Sod", + "endpoint": "https://www.sillyoldsod.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent timeouts — endpoint may be overloaded or unreachable", + "quarantinedAt": "2026-04-20T04:05:33.139Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-20T04:05:33.139Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T04:05:33.139Z", + "lastFailureAt": "2026-04-20T04:05:33.139Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "serious-fraud-office-news", + "provider": "Serious Fraud Office a News", + "endpoint": "https://www.gov.uk/search/news-and-communications?organisations%5B%5D=serious-fraud-office&parent=serious-fraud-office", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T04:05:33.139Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T04:05:33.139Z", + "lastFailureAt": "2026-04-20T04:05:33.139Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "cheshire-police-alert", + "provider": "Cheshire Police Alert", + "endpoint": "https://www.cheshirepolicealert.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "dc-police-community-messaging", + "provider": "Dorset and Cornwall Police - Community Messaging", + "endpoint": "https://community-messaging.dc.police.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "devon-cornwall-alerts", + "provider": "Devon and Cornwall Alerts", + "endpoint": "https://alerts.dc.police.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "south-yorkshire-police-alerts", + "provider": "South Yorkshire Police Alerts", + "endpoint": "https://www.sypalerts.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "stay-in-the-know-home", + "provider": "Stay In The Know - Community Alerts", + "endpoint": "https://www.stayintheknow.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "stay-in-the-know-latest-alerts", + "provider": "Stay In The Know - Latest Alerts", + "endpoint": "https://www.stayintheknow.co.uk/Content/Pages/Latest-Alerts", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-midlands-community-alerts", + "provider": "WMNow - Community Alerts", + "endpoint": "https://www.wmnow.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "west-yorkshire-community-alert", + "provider": "West Yorkshire Community Alert", + "endpoint": "https://www.wypcommunityalert.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T17:13:24.435Z", + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "france24-europe-rss", + "provider": "France 24 a Europe (RSS)", + "endpoint": "https://www.france24.com/en/europe/rss", + "kind": "rss", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-19T16:03:49.134Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T11:15:29.208Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T16:03:49.134Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T06:12:01.477Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T05:47:56.833Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T05:47:56.833Z", + "lastFailureAt": "2026-04-23T05:47:56.833Z", + "lastCheckedAt": "2026-04-23T05:47:56.833Z" + }, + { + "id": "bbc-news-uk-politics-legacy", + "provider": "BBC News a UK Politics (Legacy RSS)", + "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/uk_politics/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-19T03:30:54.684Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T03:30:54.684Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T15:59:44.503Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "rusi-home", + "provider": "RUSI", + "endpoint": "https://www.rusi.org/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 20 after repeated failures", + "quarantinedAt": "2026-04-19T03:30:54.684Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T03:30:54.684Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T03:30:54.684Z", + "lastFailureAt": "2026-04-19T03:30:54.684Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "gnet-youth-rss", + "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", + "endpoint": "https://gnet-research.org/tag/youth/feed/", + "kind": "rss", + "lane": "prevention", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T22:00:46.520Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T11:07:28.674Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T12:15:37.169Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T22:00:46.520Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T17:16:47.386Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T17:39:27.641Z", + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastCheckedAt": "2026-04-22T17:39:27.641Z" + }, + { + "id": "ealing-council-news", + "provider": "Ealing Council a News", + "endpoint": "https://www.ealing.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T21:09:53.488Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-25T21:09:53.488Z", + "lastFailureAt": "2026-04-18T21:09:53.488Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "eu-ejustice-news-rss", + "provider": "European e-Justice - News RSS", + "endpoint": "https://e-justice.europa.eu/rss/news_en", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-18T13:27:18.679Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-25T13:27:18.679Z", + "lastFailureAt": "2026-04-18T13:27:18.679Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "just-security", + "provider": "Just Security a Law, Rights & National Security", + "endpoint": "https://www.justsecurity.org/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T09:29:55.311Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T23:55:39.351Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T09:29:55.311Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T04:05:33.139Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "evening-shire", + "provider": "Evening Shire", + "endpoint": "https://eveningshire.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T07:21:41.099Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-25T07:21:41.099Z", + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastCheckedAt": "2026-04-23T20:18:46.625Z" + }, + { + "id": "quadrant2design-exhibiting-guides", + "provider": "Quadrant2. Design Exhibiting Guides", + "endpoint": "https://www.quadrant2design.com/exhibiting-guides/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T07:21:41.099Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-25T07:21:41.099Z", + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastCheckedAt": "2026-04-23T23:57:53.617Z" + }, + { + "id": "semibold", + "provider": "Semibold", + "endpoint": "https://www.semibold.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T07:21:41.099Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-25T07:21:41.099Z", + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "gnet-radicalisation-rss", + "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", + "endpoint": "https://gnet-research.org/tag/radicalisation/feed/", + "kind": "rss", + "lane": "prevention", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T21:08:30.446Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "barking-dagenham-council-news", + "provider": "Barking and Dagenham Council a News", + "endpoint": "https://www.lbbd.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 4, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "hammersmith-fulham-news", + "provider": "Hammersmith and Fulham Council a News", + "endpoint": "https://www.lbhf.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "royal-greenwich-news", + "provider": "Royal Borough of Greenwich a News", + "endpoint": "https://www.royalgreenwich.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 4, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "uk-ncsc-threat-reports", + "provider": "National Cyber Security Centre (UK) a Threat Reports", + "endpoint": "https://www.ncsc.gov.uk/api/1/services/v1/report-rss-feed.xml", + "kind": "rss", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T21:08:30.446Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "uk-parliament-isc", + "provider": "UK Parliament a Intelligence and Security Committee (Reports & News)", + "endpoint": "https://isc.independent.gov.uk/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 4, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ecfr-feeds-index", + "provider": "ECFR - Feeds", + "endpoint": "https://ecfr.eu/feeds/", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "statewatch-news", + "provider": "Statewatch - News", + "endpoint": "https://www.statewatch.org/news/", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "clingendael-publications", + "provider": "Clingendael Institute a Publications", + "endpoint": "https://www.clingendael.org/publications", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ecfr-publications", + "provider": "European Council on Foreign Relations (ECFR) a Publications", + "endpoint": "https://ecfr.eu/publications/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "financial-times-world", + "provider": "Financial Times a World", + "endpoint": "https://www.ft.com/world", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "politico-europe", + "provider": "Politico Europe", + "endpoint": "https://www.politico.eu/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "acled-updates", + "provider": "ACLED a Updates and Analysis", + "endpoint": "https://acleddata.com/", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "resolve-network-research", + "provider": "RESOLVE Network a Research", + "endpoint": "https://www.resolvenet.org/news", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 17 after repeated failures", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 503", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "reuters-uk", + "provider": "Reuters a UK News", + "endpoint": "https://www.reuters.com/world/uk/", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "soufan-center-intelbrief", + "provider": "The Soufan Center a Intel. Brief", + "endpoint": "https://thesoufancenter.org/category/intelbrief/", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "tony-blair-institute-news", + "provider": "Tony Blair Institute for Global Change a Publications", + "endpoint": "https://institute.global/insights", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "chatham-house-home", + "provider": "Chatham House", + "endpoint": "https://www.chathamhouse.org/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "chatham-house-security-defence", + "provider": "Chatham House - Security and Defence", + "endpoint": "https://www.chathamhouse.org/topics/security-and-defence", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "institute-global-home", + "provider": "Institute for Global Change", + "endpoint": "https://www.institute.global/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "wiltshire-999s", + "provider": "Wiltshire 999s", + "endpoint": "https://www.wiltshire999s.co.uk/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "icsr-kcl", + "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", + "endpoint": "https://icsr.info/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "rand-terrorism-topic", + "provider": "RAND - Terrorism Topic Updates", + "endpoint": "https://www.rand.org/topics/terrorism.html", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "start-baad-database", + "provider": "National Consortium for the Study of Terrorism (START) - Big Allied and Dangerous (BAAD) Database", + "endpoint": "https://www.start.umd.edu/baad/database/", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "start-center-publications", + "provider": "START Center (UMD) - News & Publications", + "endpoint": "https://www.start.umd.edu/news", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "bdk-rss", + "provider": "Bund Deutscher Kriminalbeamter - RSS", + "endpoint": "https://www.bdk.de/rss/alle-nachrichten/RSS", + "kind": "rss", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "euractiv-security-rss", + "provider": "BBC News - Europe", + "endpoint": "https://feeds.bbci.co.uk/news/world/europe/rss.xml", + "kind": "rss", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "isd-global-publications", + "provider": "ISD - Publications", + "endpoint": "https://www.isdglobal.org/publications/", + "kind": "html", + "lane": "prevention", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "dw-europe-rss", + "provider": "Deutsche Welle a Europe (RSS)", + "endpoint": "https://rss.dw.com/rdf/rss-en-eu", + "kind": "rss", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "ap-top-news", + "provider": "BBC News - Top Stories", + "endpoint": "https://feeds.bbci.co.uk/news/rss.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "crisis-group", + "provider": "International Crisis Group a Research & Analysis", + "endpoint": "https://www.crisisgroup.org/rss.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "crisis-group-europe", + "provider": "International Crisis Group a Europe (RSS)", + "endpoint": "https://www.crisisgroup.org/rss/56", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "lawfare-blog", + "provider": "Just Security - National Security Analysis", + "endpoint": "https://www.justsecurity.org/", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "henry-jackson-society-news", + "provider": "RUSI - Terrorism and Conflict", + "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=henry-jackson-society-news", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "the-sun-all", + "provider": "The Sun", + "endpoint": "https://www.thesun.co.uk/feeds/all/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "the-sun-all-english", + "provider": "The Sun", + "endpoint": "https://www.thesun.co.uk/feeds/news-app-english-001-all/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "the-sun-homepage", + "provider": "The Sun", + "endpoint": "https://www.thesun.co.uk/feeds/favourite-homepage/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "the-sun-news-english", + "provider": "The Sun", + "endpoint": "https://www.thesun.co.uk/feeds/news-app-english-007-news/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "metro", + "provider": "BBC News - UK", + "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml?source=metro", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "pinknews", + "provider": "Pink. News", + "endpoint": "https://www.pinknews.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T13:19:06.686Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T13:19:06.686Z", + "lastFailureAt": "2026-04-19T13:19:06.686Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "the-daily-mash", + "provider": "The Daily Mash", + "endpoint": "https://www.thedailymash.co.uk/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T13:19:06.686Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T13:19:06.686Z", + "lastFailureAt": "2026-04-19T13:19:06.686Z", + "lastCheckedAt": "2026-04-23T22:53:56.180Z" + }, + { + "id": "the-scottish-sun", + "provider": "The Scottish Sun", + "endpoint": "https://www.thescottishsun.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "the-sun", + "provider": "The Sun", + "endpoint": "https://www.thesun.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "elluminet-press", + "provider": "9to5. Mac", + "endpoint": "https://9to5mac.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 20 after repeated failures", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "faded-spring", + "provider": "Emily Underworld", + "endpoint": "https://emilyunderworld.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "ian-neate-blog", + "provider": "9to5. Mac", + "endpoint": "https://9to5mac.com/feed/?source=ian-neate-blog", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "sks-business-services", + "provider": "SKS Business Services", + "endpoint": "https://www.sksbusinessservices.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "streetspace", + "provider": "Streetspace", + "endpoint": "https://streetspacegroup.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "police-scotland-news", + "provider": "Police Scotland news", + "endpoint": "https://www.scotland.police.uk/what-s-happening/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 23 after repeated failures", + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T19:32:35.264Z", + "lastFailureAt": "2026-04-19T19:32:35.264Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "frontex-news-releases", + "provider": "Frontex a News Releases", + "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/", + "kind": "html", + "lane": "border", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "enisa-news", + "provider": "ENISA (EU Cybersecurity Agency) a News", + "endpoint": "https://www.enisa.europa.eu/news", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "enisa-rss-transition-page", + "provider": "ENISA - RSS Feeds Transition Notice", + "endpoint": "https://www.enisa.europa.eu/rss-feeds-discontinued-new-subscription-mechanism-coming-soon", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "eurojust-press-news-html", + "provider": "Eurojust - Press Releases and News", + "endpoint": "https://www.eurojust.europa.eu/media-and-events/press-releases-and-news", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "europol-media-press", + "provider": "Europol a Media and Press", + "endpoint": "https://www.europol.europa.eu/media-press", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "europol-newsroom-html", + "provider": "Europol - Newsroom", + "endpoint": "https://www.europol.europa.eu/media-press/newsroom", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "finland-supo-news", + "provider": "Finnish Security Intelligence Service - News", + "endpoint": "https://supo.fi/en/current-issues", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "german-interior-ministry-press", + "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", + "endpoint": "https://www.bmz.de/en/feed.rss", + "kind": "rss", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 20 after repeated failures", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 400", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "paris-prefecture-police-rss-page", + "provider": "Paris Prefecture of Police - RSS", + "endpoint": "https://www.prefecturedepolice.interieur.gouv.fr/presentation/les-directions-et-services/le-cabinet-du-prefet-de-police/service-de-la-communication/abonnez-vous-aux-flux-rss", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "spain-interior-ministry-news", + "provider": "Spanish Ministry of the Interior - Press", + "endpoint": "https://www.interior.gob.es/opencms/en/prensa/", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "ertzaintza-news", + "provider": "Ertzaintza - News", + "endpoint": "https://www.ertzaintza.euskadi.eus/lfr/eu/webertzaintza/noticias", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "finland-police-news", + "provider": "Finnish Police - News", + "endpoint": "https://poliisi.fi/en/news", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "paris-prefecture-police-press-releases", + "provider": "Paris Prefecture of Police - Press Releases", + "endpoint": "https://www.prefecturedepolice.interieur.gouv.fr/actualites-et-presse/communiques-de-presse/communiques-de-presse", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "romanian-police-news", + "provider": "Romanian Police - News", + "endpoint": "https://www.politiaromana.ro/en/news", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "eu-commission-presscorner-home", + "provider": "Council of the EU - Press Releases (RSS)", + "endpoint": "https://www.consilium.europa.eu/en/rss/pressreleases.ashx?source=eu-commission-presscorner-home", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "eu-council-fight-against-terrorism", + "provider": "Council of the EU - Fight Against Terrorism", + "endpoint": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "eu-council-rss-index", + "provider": "Council of the EU - RSS Index", + "endpoint": "https://www.consilium.europa.eu/en/about-site/rss/", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "eu-ct-coordinator", + "provider": "EU Counter-Terrorism Coordinator a Council of the EU", + "endpoint": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/eu-counter-terrorism-coordinator/", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "eu-fra-rss", + "provider": "EU Agency for Fundamental Rights (FRA) a RSS", + "endpoint": "https://fra.europa.eu/en/content/rss", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "eurojust-rss-feeds-page", + "provider": "Eurojust - RSS Feeds", + "endpoint": "https://www.eurojust.europa.eu/rss-feeds", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "europol-tesat-report", + "provider": "Europol - TESAT Report", + "endpoint": "https://www.europol.europa.eu/publications-events/main-reports/tesat-report", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "fra-rss", + "provider": "Human Rights Watch - News RSS", + "endpoint": "https://www.hrw.org/rss/news", + "kind": "rss", + "lane": "oversight", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "europol-eu-iru", + "provider": "Europol a EU Internet Referral Unit (EU IRU)", + "endpoint": "https://www.europol.europa.eu/about-europol/european-counter-terrorism-centre-ectc/eu-internet-referal-unit-eu-iru", + "kind": "html", + "lane": "prevention", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ncsc-nl-rss", + "provider": "NCSC Netherlands - RSS", + "endpoint": "https://feeds.ncsc.nl/nieuws.rss", + "kind": "rss", + "lane": "prevention", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "eu-council-terrorism-sanctions", + "provider": "Council of the EU - Sanctions Against Terrorism", + "endpoint": "https://www.consilium.europa.eu/en/policies/sanctions-against-terrorism/", + "kind": "html", + "lane": "sanctions", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "unhcr-europe-news", + "provider": "UNHCR Europe a News", + "endpoint": "https://www.unhcr.org/europe/news", + "kind": "html", + "lane": "border", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "french-interior-ministry-news", + "provider": "French Ministry of the Interior - News", + "endpoint": "https://www.interieur.gouv.fr/actualites", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "netherlands-nctv-news", + "provider": "Dutch NCTV - News", + "endpoint": "https://www.nctv.nl/actueel", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "french-gendarmerie-news", + "provider": "Gendarmerie Nationale - News", + "endpoint": "https://www.gendarmerie.interieur.gouv.fr/gendarmerie/actualites", + "kind": "html", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "french-police-nationale-news", + "provider": "Police Nationale - News", + "endpoint": "https://www.police-nationale.interieur.gouv.fr/actualites", + "kind": "html", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ireland-gardai-press", + "provider": "An Garda Siochana - Press Releases", + "endpoint": "https://www.garda.ie/en/about-us/our-departments/office-of-corporate-communications/press-releases/", + "kind": "html", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "paris-police-prefecture-news", + "provider": "France24 - France (RSS)", + "endpoint": "https://www.france24.com/en/france/rss", + "kind": "rss", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "portugal-psp-news", + "provider": "The Portugal News - Crime", + "endpoint": "https://www.theportugalnews.com/news/crime", + "kind": "html", + "lane": "incidents", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "coe-counter-terrorism", + "provider": "Council of Europe a Counter-Terrorism", + "endpoint": "https://www.coe.int/en/web/counter-terrorism/news-updates", + "kind": "html", + "lane": "oversight", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "netherlands-prosecution-news", + "provider": "Dutch Public Prosecution Service - News", + "endpoint": "https://www.om.nl/actueel/nieuws", + "kind": "html", + "lane": "oversight", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "pst-no-english", + "provider": "PST (Norway) English reporting page", + "endpoint": "https://www.pst.no/en/report/", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ran-network", + "provider": "RUSI - Terrorism and Conflict", + "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=ran-network", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "supo-fi-english", + "provider": "SUPO Finland news and press releases", + "endpoint": "https://supo.fi/en/news-and-press-releases", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "iom-news", + "provider": "IOM (International Organization for Migration) a News", + "endpoint": "https://www.iom.int/news", + "kind": "html", + "lane": "border", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "unsc-counter-terrorism-committee", + "provider": "UN Security Council - Counter-Terrorism Committee (CTC) Updates", + "endpoint": "https://www.un.org/securitycouncil/ctc/news", + "kind": "html", + "lane": "oversight", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "fatf-news", + "provider": "Financial Action Task Force (FATF) a News", + "endpoint": "https://www.fatf-gafi.org/en/publications.html", + "kind": "html", + "lane": "sanctions", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "interpol-notices", + "provider": "INTERPOL a Notices", + "endpoint": "https://www.interpol.int/How-we-work/Notices", + "kind": "html", + "lane": "sanctions", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "unsc-1267-press-releases", + "provider": "UN Security Council - ISIL/Da'esh & Al-Qaeda Sanctions Committee Press Releases", + "endpoint": "https://main.un.org/securitycouncil/en/sanctions/1267/press-releases", + "kind": "html", + "lane": "sanctions", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "unsc-consolidated-list", + "provider": "UN Security Council - Consolidated Sanctions List Updates (RSS)", + "endpoint": "https://main.un.org/securitycouncil/en/rss-updates-unsc-consolidated-list", + "kind": "rss", + "lane": "sanctions", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "barnet-council-news", + "provider": "Barnet Post", + "endpoint": "https://barnetpost.co.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "city-of-london-police-fraud-reporting", + "provider": "City of London Police - Fraud Reporting", + "endpoint": "https://www.cityoflondon.police.uk/ro/report/fo/v1/fraud/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cnwl-news", + "provider": "Central and North West London NHS Foundation Trust a News", + "endpoint": "https://www.cnwl.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "east-london-nhs-news", + "provider": "East London NHS Foundation Trust a News", + "endpoint": "https://www.elft.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "enfield-council-news", + "provider": "Enfield Council a News and Events", + "endpoint": "https://www.enfield.gov.uk/news-and-events", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "haringey-council-news", + "provider": "Haringey Community Press", + "endpoint": "https://haringeycommunitypress.co.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "harrow-council-news", + "provider": "Harrow Council a News", + "endpoint": "https://www.harrow.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "heathrow-media-centre", + "provider": "Heathrow a Media Centre", + "endpoint": "https://mediacentre.heathrow.com/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "imperial-healthcare-news", + "provider": "Imperial College Healthcare NHS Trust a News", + "endpoint": "https://www.imperial.nhs.uk/about-us/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "kensington-chelsea-newsroom", + "provider": "Royal Borough of Kensington and Chelsea a Newsroom", + "endpoint": "https://www.rbkc.gov.uk/newsroom", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "lewisham-council-news", + "provider": "Salamander News", + "endpoint": "https://salamandernews.org/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "london-ambulance-news", + "provider": "London Ambulance Service a News", + "endpoint": "https://www.londonambulance.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "london-city-airport-media-centre", + "provider": "London City Airport a Media Centre", + "endpoint": "https://www.londoncityairport.com/corporate/media-centre", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "london-councils-news", + "provider": "London Councils a News", + "endpoint": "https://www.londoncouncils.gov.uk/news-and-press-releases", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "london-fire-brigade-news", + "provider": "London Fire Brigade a News", + "endpoint": "https://www.london-fire.gov.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "london-gov-home", + "provider": "London.gov.uk", + "endpoint": "https://www.london.gov.uk/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "london-gov-press-releases-html", + "provider": "London.gov.uk - Press Releases", + "endpoint": "https://www.london.gov.uk/press-releases", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nhs-london-ncl-news", + "provider": "NHS North Central London a News", + "endpoint": "https://nclhealthandcare.org.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nhs-london-swl-news", + "provider": "NHS South West London a News", + "endpoint": "https://www.southwestlondon.icb.nhs.uk/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "north-middlesex-news", + "provider": "North Middlesex University Hospital a News", + "endpoint": "https://www.northmid.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "port-of-london-authority-news", + "provider": "Port of London Authority a News", + "endpoint": "https://pla.co.uk/News", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "royal-free-london-news", + "provider": "Royal Free London NHS Foundation Trust a News", + "endpoint": "https://www.royalfree.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "southwark-newsroom", + "provider": "Southwark Council a Newsroom", + "endpoint": "https://news.southwark.gov.uk/newsroom/news/rss", + "kind": "rss", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "tavistock-portman-news", + "provider": "Tavistock and Portman NHS Foundation Trust a News", + "endpoint": "https://tavistockandportman.nhs.uk/about-us/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "tfl-press-releases", + "provider": "Transport for London - Press Releases", + "endpoint": "https://tfl.gov.uk/info-for/media/press-releases?source=tfl-press-releases", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "tfl-press-releases-html", + "provider": "Transport for London - Press Releases", + "endpoint": "https://tfl.gov.uk/info-for/media/press-releases", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "city-of-london-police-news", + "provider": "National Crime Agency - News", + "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=city-of-london-police-news", + "kind": "html", + "lane": "incidents", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "city-of-london-police-news-html", + "provider": "City of London Police - News", + "endpoint": "https://www.cityoflondon.police.uk/news/city-of-london-police/news/", + "kind": "html", + "lane": "incidents", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "city-of-london-police-newsroom", + "provider": "Metropolitan Police Service - News", + "endpoint": "https://news.met.police.uk/", + "kind": "html", + "lane": "incidents", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "ct-policing-london", + "provider": "Counter Terrorism Policing London", + "endpoint": "https://www.counterterrorism.police.uk/counter-terrorism-policing-london/", + "kind": "html", + "lane": "incidents", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "mopac-html", + "provider": "Mayor's Office for Policing and Crime", + "endpoint": "https://www.london.gov.uk/programmes-strategies/mayors-office-policing-and-crime-mopac", + "kind": "html", + "lane": "oversight", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "bbc-news-front-page-legacy", + "provider": "BBC News a Front Page (Legacy RSS)", + "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/front_page/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-24T22:12:37.099Z", + "lastFailureAt": "2026-04-17T22:12:37.099Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "bbc-news-uk", + "provider": "BBC News a UK", + "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-24T22:12:37.099Z", + "lastFailureAt": "2026-04-17T22:12:37.099Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "essex-police-news", + "provider": "Essex Police a News", + "endpoint": "https://www.essex.police.uk/news/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "kent-police-news", + "provider": "Kent Police a News", + "endpoint": "https://www.kent.police.uk/news/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "mi5-news", + "provider": "National Crime Agency - News", + "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=mi5-news", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "national-crime-agency-news", + "provider": "National Crime Agency a News", + "endpoint": "https://www.nationalcrimeagency.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "report-fraud-home", + "provider": "Report Fraud", + "endpoint": "https://www.reportfraud.police.uk/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "report-fraud-newsroom", + "provider": "Report Fraud - Newsroom", + "endpoint": "https://www.reportfraud.police.uk/collection/newsroom/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "church-of-england-newspaper", + "provider": "Church of England Newspaper", + "endpoint": "https://www.churchnewspaper.com/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-24T22:12:37.099Z", + "lastFailureAt": "2026-04-17T22:12:37.099Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "bedfordshire-police-news", + "provider": "Bedfordshire Police - News", + "endpoint": "https://www.beds.police.uk/news/bedfordshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "bedfordshire-police-news-search", + "provider": "Bedfordshire Police - News Search", + "endpoint": "https://www.beds.police.uk/news/news-search/?ct=News", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "british-transport-police-news", + "provider": "British Transport Police Authority - News Feed", + "endpoint": "https://btpa.police.uk/feed/", + "kind": "rss", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "btp-british-transport-police-news-html", + "provider": "British Transport Police - News", + "endpoint": "https://www.btp.police.uk/news/british-transport-police/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cambridgeshire-police-news-search", + "provider": "Cambridgeshire Police - News Search", + "endpoint": "https://www.cambs.police.uk/news/news-search/?ct=News", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cheshire-police-news", + "provider": "Cheshire Constabulary - News", + "endpoint": "https://www.cheshire.police.uk/news/cheshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cleveland-police-news", + "provider": "Cleveland Police - News", + "endpoint": "https://www.cleveland.police.uk/news/cleveland/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cps-news-centre", + "provider": "Crown Prosecution Service a News Centre", + "endpoint": "https://www.cps.gov.uk/news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ct-policing-north-west", + "provider": "Counter Terrorism Policing North West", + "endpoint": "https://www.counterterrorism.police.uk/north-west/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ct-policing-uk-latest-news", + "provider": "Counter Terrorism Policing UK a Latest News", + "endpoint": "https://www.counterterrorism.police.uk/latest-news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ct-policing-uk-rss-feed", + "provider": "Counter Terrorism Policing UK - Latest News", + "endpoint": "https://www.counterterrorism.police.uk/latest-news/?source=ct-policing-uk-rss-feed", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T14:03:06.243Z", + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastCheckedAt": "2026-04-23T14:03:06.243Z" + }, + { + "id": "cumbria-police-news", + "provider": "Cumbria Police - News", + "endpoint": "https://www.cumbria.police.uk/news/cumbria/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cumbria-police-newsroom", + "provider": "Cumbria Police - Newsroom", + "endpoint": "https://www.news.cumbria.police.uk/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "derbyshire-police-news", + "provider": "Derbyshire Police - News", + "endpoint": "https://www.derbyshire.police.uk/news/derbyshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "devon-and-cornwall-police-newsroom", + "provider": "Devon and Cornwall Police - Newsroom", + "endpoint": "https://news.devon-cornwall.police.uk/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "devon-cornwall-police-news", + "provider": "Devon and Cornwall Police - News", + "endpoint": "https://www.devon-cornwall.police.uk/news/devon-cornwall/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "dorset-police-news", + "provider": "Dorset Police - News", + "endpoint": "https://www.dorset.police.uk/news/dorset/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "dorset-police-newsroom", + "provider": "Dorset Police - Newsroom", + "endpoint": "https://news.dorset.police.uk/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "durham-constabulary-news", + "provider": "Durham Constabulary a News", + "endpoint": "https://www.durham.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "durham-police-durham-news", + "provider": "Durham Police - Durham News", + "endpoint": "https://www.durham.police.uk/news/durham/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "dyfed-powys-police-news", + "provider": "Dyfed-Powys Police - News", + "endpoint": "https://www.dyfed-powys.police.uk/news/dyfed-powys/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "essex-police-news-html", + "provider": "Essex Police - News", + "endpoint": "https://www.essex.police.uk/news/essex/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gloucestershire-police-news", + "provider": "Gloucestershire Police - News", + "endpoint": "https://www.gloucestershire.police.uk/news/gloucestershire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gmp-news", + "provider": "Greater Manchester Police a News", + "endpoint": "https://www.gmp.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "greater-manchester-police-news", + "provider": "Greater Manchester Police - News", + "endpoint": "https://www.gmp.police.uk/news/greater-manchester/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gwent-police-news", + "provider": "Gwent Police - News", + "endpoint": "https://www.gwent.police.uk/news/gwent/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "hampshire-police-news", + "provider": "Hampshire & Isle of Wight Constabulary a News", + "endpoint": "https://www.hampshire.police.uk/news/hampshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "hertfordshire-police-news", + "provider": "Hertfordshire Constabulary a News", + "endpoint": "https://www.herts.police.uk/news/hertfordshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "humberside-police-news-search", + "provider": "Humberside Police - News Search", + "endpoint": "https://www.humberside.police.uk/news/news-search/?ct=News", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "kent-police-news-html", + "provider": "Kent Police - News", + "endpoint": "https://www.kent.police.uk/news/kent/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "lancashire-constabulary-news", + "provider": "Lancashire Constabulary a News", + "endpoint": "https://www.lancashire.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "leicestershire-police-news", + "provider": "National Crime Agency - News", + "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=leicestershire-police-news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "lincolnshire-police-news", + "provider": "Lincolnshire Police - News", + "endpoint": "https://www.lincs.police.uk/news/lincolnshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "merseyside-police-news", + "provider": "Merseyside Police a News", + "endpoint": "https://www.merseyside.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "merseyside-police-news-html", + "provider": "Merseyside Police - News", + "endpoint": "https://www.merseyside.police.uk/news/merseyside-police/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "norfolk-constabulary-news", + "provider": "Norfolk Constabulary - News", + "endpoint": "https://www.norfolk.police.uk/news/norfolk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "north-wales-police-news", + "provider": "North Wales Police - News", + "endpoint": "https://www.northwales.police.uk/news/north-wales/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "north-yorkshire-police-news-html", + "provider": "North Yorkshire Police - News", + "endpoint": "https://www.northyorkshire.police.uk/news/north-yorkshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "northamptonshire-police-news-html", + "provider": "Northamptonshire Police - News", + "endpoint": "https://www.northants.police.uk/news/northants/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "northumbria-police-news", + "provider": "North East Bylines", + "endpoint": "https://northeastbylines.co.uk/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "northumbria-police-northumbria-news", + "provider": "Northumbria Police - Northumbria News", + "endpoint": "https://www.northumbria.police.uk/news/northumbria/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nottinghamshire-police-news", + "provider": "Nottinghamshire Police a News", + "endpoint": "https://www.nottinghamshire.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nottinghamshire-police-nottinghamshire-news", + "provider": "Nottinghamshire Police - Nottinghamshire News", + "endpoint": "https://www.nottinghamshire.police.uk/news/nottinghamshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "psni-news", + "provider": "Police Service of Northern Ireland a News", + "endpoint": "https://www.psni.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "south-wales-police-news", + "provider": "South Wales Police - News", + "endpoint": "https://www.south-wales.police.uk/news/south-wales/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "south-yorkshire-police-news", + "provider": "South Yorkshire Police a News", + "endpoint": "https://www.southyorkshire.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "staffordshire-police-news", + "provider": "Staffordshire Police a News", + "endpoint": "https://www.staffordshire.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "staffordshire-police-staffordshire-news", + "provider": "Staffordshire Police - Staffordshire News", + "endpoint": "https://www.staffordshire.police.uk/news/staffordshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "suffolk-constabulary-news", + "provider": "Suffolk Constabulary - News", + "endpoint": "https://www.suffolk.police.uk/news/suffolk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "surrey-police-news", + "provider": "Surrey Police a News", + "endpoint": "https://www.surrey.police.uk/news/surrey/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "sussex-police-news", + "provider": "Sussex Police a News", + "endpoint": "https://www.sussex.police.uk/news/sussex/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "thames-valley-police-news", + "provider": "Thames Valley Police a News", + "endpoint": "https://www.thamesvalley.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "thames-valley-police-news-html", + "provider": "Thames Valley Police - Thames Valley News", + "endpoint": "https://www.thamesvalley.police.uk/news/thames-valley/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "warwickshire-police-news", + "provider": "Warwickshire Connected - Latest Alerts", + "endpoint": "https://www.warwickshireconnected.com/Content/Pages/Latest-Alerts", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "west-mercia-police-news-html", + "provider": "West Mercia Police - News", + "endpoint": "https://www.westmercia.police.uk/news/west-mercia/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "west-midlands-police-news", + "provider": "West Midlands Police a News", + "endpoint": "https://www.westmidlands.police.uk/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "west-yorkshire-police-missing-rss", + "provider": "West Yorkshire Police - Missing Feed", + "endpoint": "https://www.westyorkshire.police.uk/news/missing/feed", + "kind": "rss", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "wiltshire-police-news", + "provider": "Wiltshire Police - News", + "endpoint": "https://www.wiltshire.police.uk/news/wiltshire/news/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "cps-homepage", + "provider": "Crown Prosecution Service", + "endpoint": "https://www.cps.gov.uk/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gov-uk-hmic", + "provider": "HM Inspectorate of Constabulary a GOV.UK", + "endpoint": "https://hmicfrs.justiceinspectorates.gov.uk/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gov-uk-parliament-jcnss", + "provider": "UK Parliament a Joint Committee on National Security Strategy", + "endpoint": "https://committees.parliament.uk/committee/54/joint-committee-on-the-national-security-strategy/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "lords-in-focus-rss", + "provider": "Hansard Society - Despatch Box", + "endpoint": "https://www.hansardsociety.org.uk/blog", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "lords-library-notes-rss", + "provider": "Hansard Society - Despatch Box", + "endpoint": "https://www.hansardsociety.org.uk/blog?source=lords-library-notes-rss", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "police-ombudsman-current-investigations", + "provider": "Police Ombudsman - Current Investigations", + "endpoint": "https://www.policeombudsman.org/investigation-reports/current-investigations", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "police-uk-outcomes-at-location-1609590", + "provider": "Police Data UK - Outcomes At Location API Docs", + "endpoint": "https://data.police.uk/docs/method/outcomes-at-location/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "uk-parliament-business-news", + "provider": "UK Parliament - Business News", + "endpoint": "https://www.parliament.uk/business/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "uk-parliament-foreign-affairs-committee", + "provider": "UK Parliament a Foreign Affairs Select Committee", + "endpoint": "https://committees.parliament.uk/committee/78/foreign-affairs-committee/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "uk-parliament-justice-committee", + "provider": "UK Parliament a Justice Select Committee", + "endpoint": "https://committees.parliament.uk/committee/102/justice-committee/news/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ct-policing-prevent-programme", + "provider": "Counter Terrorism Policing - Prevent", + "endpoint": "https://www.counterterrorism.police.uk/what-we-do/counter-terrorism/prevent/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "ct-policing-what-you-can-do", + "provider": "Counter Terrorism Policing - What You Can Do", + "endpoint": "https://www.counterterrorism.police.uk/what-you-can-do/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gov-uk-report-terrorism", + "provider": "GOV.UK - Report Terrorism", + "endpoint": "https://www.gov.uk/report-terrorism", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "gov-uk-terrorism-national-emergency", + "provider": "GOV.UK - Terrorism National Emergency", + "endpoint": "https://www.gov.uk/terrorism-national-emergency", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "mi5-terrorism-threat-levels", + "provider": "MI5 - Terrorism Threat Levels", + "endpoint": "https://www.mi5.gov.uk/threats-and-advice/terrorism-threat-levels", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "northamptonshire-talking", + "provider": "Northamptonshire Talking", + "endpoint": "https://www.northamptonshiretalking.co.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "npsa-blog", + "provider": "NPSA - Blog", + "endpoint": "https://www.npsa.gov.uk/blog", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "npsa-blog-news", + "provider": "NPSA - Blog News", + "endpoint": "https://www.npsa.gov.uk/blog/news", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "protectuk", + "provider": "ProtectUK (NPSA) a Protective Security Guidance", + "endpoint": "https://www.protectuk.police.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "uk-ncsc-homepage", + "provider": "UK NCSC - Homepage", + "endpoint": "https://www.ncsc.gov.uk/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "uk-sanctions-list", + "provider": "UK Sanctions List (FCDO) a Consolidated List (XML Service)", + "endpoint": "https://sanctionslist.fcdo.gov.uk/docs/UK-Sanctions-List.xml", + "kind": "html", + "lane": "sanctions", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "fbi-national-press-releases", + "provider": "FBI - National Press Releases (RSS)", + "endpoint": "https://www.fbi.gov/feeds/national-press-releases/RSS", + "kind": "rss", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "fbi-stories", + "provider": "FBI - Top Stories (RSS)", + "endpoint": "https://www.fbi.gov/feeds/fbi-top-stories/rss.xml", + "kind": "rss", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "fbi-top-stories", + "provider": "FBI - Top Stories (RSS)", + "endpoint": "https://www.fbi.gov/feeds/fbi-top-stories/rss.xml?source=fbi-top-stories", + "kind": "rss", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "HTML structure changed — selectors no longer match; needs parser update", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "consecutiveFailures": 7, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T10:13:21.253Z", + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastCheckedAt": "2026-04-23T10:13:21.253Z" + }, + { + "id": "us-house-homeland-security", + "provider": "US House Committee on Homeland Security - News", + "endpoint": "https://homeland.house.gov/news/", + "kind": "html", + "lane": "oversight", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 6, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "belgium-crisis-centre-news", + "provider": "Belgian National Crisis Centre - Newsroom", + "endpoint": "https://crisiscenter.be/en/newsroom", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 5 after repeated failures", + "quarantinedAt": "2026-04-17T20:09:53.653Z", + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-17T20:09:53.653Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "german-bka-press", + "provider": "German BKA - Press Releases (2026 archive)", + "endpoint": "https://www.bka.de/DE/Presse/Listenseite_Pressemitteilungen/2026/2026_node.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 5 after repeated failures", + "quarantinedAt": "2026-04-17T20:09:53.653Z", + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-17T20:09:53.653Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "policia-nacional-news", + "provider": "Policia Nacional - Press", + "endpoint": "https://www.policia.es/_es/comunicacion_salaprensa.php", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Health score degraded to 5 after repeated failures", + "quarantinedAt": "2026-04-17T20:09:53.653Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-17T20:09:53.653Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-19T18:05:04.781Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T18:05:04.781Z", + "lastFailureAt": "2026-04-19T18:05:04.781Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "bfv-de-english", + "provider": "BfV service page (Federal Office for the Protection of the Constitution)", + "endpoint": "https://www.verfassungsschutz.de/EN/service/service_node.html", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-17T11:07:28.674Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-24T11:07:28.674Z", + "lastFailureAt": "2026-04-17T11:07:28.674Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "german-bka-press-releases-de", + "provider": "BKA Germany - Press Releases", + "endpoint": "https://www.bka.de/DE/Aktuelle. Informationen/Aktuelle. Meldungen/Pressemeldungen/pressemitteilungen_node.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Infrastructure instability — mixed timeout and network errors; auto-retry likely to recover", + "quarantinedAt": "2026-04-17T08:04:04.612Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T07:32:24.475Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T17:39:27.641Z", + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastCheckedAt": "2026-04-22T17:39:27.641Z" + }, + { + "id": "surgezirc-uk", + "provider": "Surge. Zirc UK", + "endpoint": "https://surgezirc.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "quarantinedAt": "2026-04-17T08:04:04.612Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T14:11:10.963Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T11:47:27.254Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T11:47:27.254Z", + "lastFailureAt": "2026-04-23T11:47:27.254Z", + "lastCheckedAt": "2026-04-23T11:47:27.254Z" + }, + { + "id": "arcticdry", + "provider": "Arctic. Dry", + "endpoint": "https://www.arcticdry.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T08:04:04.612Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-24T08:04:04.612Z", + "lastFailureAt": "2026-04-17T08:04:04.612Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "police-uk-all-crime-leicester", + "provider": "Police.uk - Street Crime Around Leicester", + "endpoint": "https://data.police.uk/api/crimes-street/all-crime?lat=52.629729&lng=-1.131592", + "kind": "json", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T23:55:39.351Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-23T23:55:39.351Z", + "lastFailureAt": "2026-04-16T23:55:39.351Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "daily-mail-online", + "provider": "Daily Mail Online - Popular Stories", + "endpoint": "https://www.dailymail.co.uk/home/index.rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T23:55:39.351Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-23T23:55:39.351Z", + "lastFailureAt": "2026-04-16T23:55:39.351Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "counter-extremism-project-news", + "provider": "Counter Extremism Project a News", + "endpoint": "https://www.counterextremism.com/news-and-media", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T11:15:29.208Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T12:14:24.733Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "rusi-terrorism-conflict", + "provider": "RUSI - Terrorism and Conflict", + "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T11:15:29.208Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T12:14:24.733Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T12:14:24.733Z", + "lastFailureAt": "2026-04-20T12:14:24.733Z", + "lastCheckedAt": "2026-04-24T03:29:13.488Z" + }, + { + "id": "gov-uk-counter-extremism-commissioner", + "provider": "Counter Extremism Commissioner a GOV.UK", + "endpoint": "https://www.govwire.co.uk/rss/commission-for-countering-extremism", + "kind": "rss", + "lane": "prevention", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T19:01:30.233Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-23T19:01:30.233Z", + "lastFailureAt": "2026-04-16T19:01:30.233Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "denmark-pet-news", + "provider": "Danish Security and Intelligence Service - News", + "endpoint": "https://pet.dk/aktuelt/nyhedsliste", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "german-bfv-news", + "provider": "German BfV - Press", + "endpoint": "https://www.verfassungsschutz.de/EN/service/press/press_node.html", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nctv-english-rss", + "provider": "NCTV Netherlands - English RSS", + "endpoint": "https://english.nctv.nl/latest/news", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "belgian-federal-police-news", + "provider": "Belgian Federal Police - News", + "endpoint": "https://www.police.be/5998/en/node/10868", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T11:47:27.254Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T11:47:27.254Z", + "lastFailureAt": "2026-04-23T11:47:27.254Z", + "lastCheckedAt": "2026-04-23T11:47:27.254Z" + }, + { + "id": "czech-police-news", + "provider": "Police of the Czech Republic - News", + "endpoint": "https://policie.gov.cz/clanek/Police-of-the-Czech-Republic.aspx", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "guardia-civil-news", + "provider": "El Pais English - Guardia Civil", + "endpoint": "https://english.elpais.com/news/guardia-civil/", + "kind": "html", + "lane": "incidents", + "region": "eu", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "switzerland-fedpol-news", + "provider": "Swiss fedpol - News", + "endpoint": "https://www.fedpol.admin.ch/en/newnsb", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-22T21:59:30.032Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T21:59:30.032Z", + "lastFailureAt": "2026-04-22T21:59:30.032Z", + "lastCheckedAt": "2026-04-22T21:59:30.032Z" + }, + { + "id": "pet-dk-english", + "provider": "PET (Denmark) a English News", + "endpoint": "https://pet.dk/en/news-and-publications/news-list", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "nato-news-rss", + "provider": "NATO a News (RSS)", + "endpoint": "https://www.nato.int/en/news-and-events/articles/news", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "occrp-news", + "provider": "OCCRP a Organized Crime and Corruption Reporting Project", + "endpoint": "https://www.occrp.org/en/announcements", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T07:21:41.099Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T08:39:19.161Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "rferl-security-news-rss", + "provider": "Radio Free Europe/Radio Liberty a Security (RSS)", + "endpoint": "https://www.rferl.org/latest-news", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T07:21:41.099Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T08:39:19.161Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T08:39:19.161Z", + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastCheckedAt": "2026-04-23T22:53:56.180Z" + }, + { + "id": "unodc-news", + "provider": "UNODC (UN Office on Drugs and Crime) a Press Releases", + "endpoint": "https://www.unodc.org/unodc/en/news/news.html", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gctf-news", + "provider": "Global Counterterrorism Forum (GCTF) a News", + "endpoint": "https://www.thegctf.org/News-Stories/PgrID/918/PageID/3", + "kind": "html", + "lane": "oversight", + "region": "international", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T04:05:33.139Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "barts-health-news", + "provider": "Barts Health NHS Trust a News", + "endpoint": "https://www.bartshealth.nhs.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T08:09:12.931Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T08:09:12.931Z", + "lastFailureAt": "2026-04-23T08:09:12.931Z", + "lastCheckedAt": "2026-04-23T08:09:12.931Z" + }, + { + "id": "bromley-council-news", + "provider": "Bromley Council a Newsroom", + "endpoint": "https://www.bromley.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "homerton-healthcare-news", + "provider": "Homerton Healthcare NHS Foundation Trust a News", + "endpoint": "https://www.homerton.nhs.uk/trust-news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "mayor-of-london-press-releases", + "provider": "Mayor of London a Press Releases", + "endpoint": "https://www.london.gov.uk/rss-feeds/80610", + "kind": "rss", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "nhs-london-sel-news", + "provider": "NHS South East London a News", + "endpoint": "https://www.selondonics.org/icb/about-us/news/", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "slam-news", + "provider": "South London and Maudsley NHS Foundation Trust a News", + "endpoint": "https://slam.nhs.uk/pressreleases", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "tower-hamlets-council-news", + "provider": "Tower Hamlets Council a News", + "endpoint": "https://www.towerhamlets.gov.uk/News_events/News.aspx", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "westminster-city-council-news", + "provider": "Westminster City Council a News", + "endpoint": "https://www.westminster.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "whittington-health-news", + "provider": "Whittington Health a News", + "endpoint": "https://www.whittington.nhs.uk/mini-apps/news/news. Items.asp", + "kind": "html", + "lane": "context", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 5, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "london-assembly-press-releases", + "provider": "London Assembly a Press Releases", + "endpoint": "https://www.london.gov.uk/rss-feeds/80611", + "kind": "rss", + "lane": "oversight", + "region": "london", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "gov-uk-defence-intelligence", + "provider": "UK Defence Intelligence a GOV.UK", + "endpoint": "https://www.gov.uk/government/groups/defence-intelligence", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "mi5-news-rss-direct", + "provider": "MI5 - News RSS", + "endpoint": "https://www.mi5.gov.uk/news", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "daily-politics", + "provider": "Daily Politics", + "endpoint": "https://www.dailypolitics.com/categories/r. RzjN-bU/", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T07:21:41.099Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T08:39:19.161Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T08:39:19.161Z", + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastCheckedAt": "2026-04-23T22:53:56.180Z" + }, + { + "id": "joint-committee-human-rights-html", + "provider": "Joint Committee on Human Rights", + "endpoint": "https://committees.parliament.uk/committee/93/human-rights-joint-committee/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T19:31:23.009Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T19:31:23.009Z", + "lastFailureAt": "2026-04-23T19:31:23.009Z", + "lastCheckedAt": "2026-04-23T19:31:23.009Z" + }, + { + "id": "scottish-government-justice-news", + "provider": "Scottish Government - Justice and Safety", + "endpoint": "https://www.gov.scot/policies/community-safety/latest/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "dni-press-releases", + "provider": "Office of the Director of National Intelligence - Press Releases", + "endpoint": "https://www.dni.gov/index.php/who-we-are/348-newsroom/press-releases", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "doj-nsd-press-releases", + "provider": "U.S. Department of Justice - National Security Division Press Releases", + "endpoint": "https://www.justice.gov/nsd/press-room", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Endpoint likely removed — all recent errors are HTTP 404", + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T06:30:13.977Z", + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "us-treasury-ofac-press-releases", + "provider": "U.S. Treasury (OFAC) - Press Releases", + "endpoint": "https://ofac.treasury.gov/press-releases", + "kind": "html", + "lane": "sanctions", + "region": "us", + "healthScore": 0, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T15:11:26.228Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-23T15:11:26.228Z", + "lastFailureAt": "2026-04-16T15:11:26.228Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "bbc-news-england-legacy", + "provider": "BBC News a England (Legacy RSS)", + "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/england/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 3, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "aljazeera-news-rss", + "provider": "Al Jazeera English a Top Stories (RSS)", + "endpoint": "https://www.aljazeera.com/xml/rss/all.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 3, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T17:16:47.386Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "rte-ireland-news-rss", + "provider": "RTE News - Ireland (RSS)", + "endpoint": "https://feeds.feedburner.com/ietopstories", + "kind": "rss", + "lane": "context", + "region": "europe", + "healthScore": 5, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "2026-04-27T08:39:19.161Z", + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "channel-4-news", + "provider": "Channel 4 News", + "endpoint": "https://www.channel4.com/news/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 10, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 4, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T23:15:54.554Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T00:08:15.005Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T03:57:52.244Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-22T14:59:55.048Z" + }, + { + "id": "england-naturally", + "provider": "England, Naturally", + "endpoint": "https://englandnaturally.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 11, + "status": "auto-quarantined", + "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "quarantinedAt": "2026-04-23T03:28:47.210Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + }, + { + "id": "love-my-dress", + "provider": "Love My Dress", + "endpoint": "https://www.lovemydress.net/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 11, + "status": "auto-quarantined", + "reason": "Health score degraded to 14 after repeated failures", + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 520", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z" + }, + { + "id": "the-week-uk", + "provider": "The Week UK", + "endpoint": "https://www.theweek.co.uk/feeds/all", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 13, + "status": "auto-quarantined", + "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T08:39:19.161Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-29T14:59:55.048Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "euiss-home", + "provider": "EU Institute for Security Studies", + "endpoint": "https://www.iss.europa.eu/", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "icct-home", + "provider": "ICCT - Home", + "endpoint": "https://icct.nl/", + "kind": "html", + "lane": "context", + "region": "eu", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "breakingnews-ie", + "provider": "Breaking. News.ie", + "endpoint": "https://feeds.breakingnews.ie/bntopstories", + "kind": "rss", + "lane": "context", + "region": "eu", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "independent-ie", + "provider": "Independent.ie", + "endpoint": "https://www.independent.ie/rss/", + "kind": "rss", + "lane": "context", + "region": "eu", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "eucrim-counter-terrorism-agenda", + "provider": "eucrim - Commission Counter Terrorism Agenda", + "endpoint": "https://eucrim.eu/news/commission-counter-terrorism-agenda/", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "eucrim-judicial-counter-terrorism-register", + "provider": "eucrim - Judicial Counter Terrorism Register", + "endpoint": "https://eucrim.eu/news/judicial-counter-terrorism-register/", + "kind": "html", + "lane": "oversight", + "region": "eu", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "icct-perspectives-on-terrorism", + "provider": "Perspectives on Terrorism (ICCT) a Journal", + "endpoint": "https://pt.icct.nl/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "icct-publications", + "provider": "International Centre for Counter-Terrorism (ICCT) - Publications", + "endpoint": "https://icct.nl/publications", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "vox-pol-publications", + "provider": "VOX-Pol Network a Publications", + "endpoint": "https://www.voxpol.eu/publications/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "isd-global", + "provider": "Institute for Strategic Dialogue (ISD) a Articles & Reports", + "endpoint": "https://www.isdglobal.org/", + "kind": "html", + "lane": "prevention", + "region": "europe", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "bbc-news-world", + "provider": "BBC News a World", + "endpoint": "https://feeds.bbci.co.uk/news/world/rss.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "bbc-news-world-legacy", + "provider": "BBC News a World (Legacy RSS)", + "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/world/rss.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "bellingcat", + "provider": "Bellingcat a Investigations", + "endpoint": "https://www.bellingcat.com/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "chathamhouse-events", + "provider": "Chatham House a Events (RSS)", + "endpoint": "https://www.chathamhouse.org/path/events.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "chathamhouse-news-releases", + "provider": "Chatham House a News Releases (RSS)", + "endpoint": "https://www.chathamhouse.org/path/news-releases.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "global-initiative-news", + "provider": "Global Initiative Against Transnational Organized Crime a News", + "endpoint": "https://globalinitiative.net/news/", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "tech-against-terrorism-podcast", + "provider": "Tech Against Terrorism - Podcast", + "endpoint": "https://podcast.techagainstterrorism.org/", + "kind": "html", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "war-on-the-rocks", + "provider": "War on the Rocks a National Security & CT Analysis", + "endpoint": "https://warontherocks.com/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "tech-against-terrorism", + "provider": "Tech Against Terrorism a Blog", + "endpoint": "https://techagainstterrorism.org/", + "kind": "html", + "lane": "prevention", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "tech-against-terrorism-home", + "provider": "Tech Against Terrorism - Home", + "endpoint": "https://techagainstterrorism.org/home", + "kind": "html", + "lane": "prevention", + "region": "international", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "hope-not-hate-home", + "provider": "Hope not hate podcast", + "endpoint": "https://feeds.buzzsprout.com/170425.rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "rusi-publications", + "provider": "RUSI (Royal United Services Institute) a Publications", + "endpoint": "https://www.rusi.org/publications", + "kind": "html", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "birmingham-mail", + "provider": "Birmingham Mail", + "endpoint": "https://www.birminghammail.co.uk/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "breaking-news-today", + "provider": "Breaking News Today", + "endpoint": "https://www.breakingnewstoday.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "consett-magazine", + "provider": "Consett Magazine", + "endpoint": "https://consettmagazine.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "daily-echo", + "provider": "Daily Echo", + "endpoint": "https://www.dailyecho.co.uk/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "daily-express", + "provider": "Daily Express", + "endpoint": "https://feeds.feedburner.com/daily-express-news-showbiz", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "daily-mirror", + "provider": "Daily Mirror", + "endpoint": "https://www.mirror.co.uk/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "glasgow-times", + "provider": "Glasgow Times", + "endpoint": "https://www.glasgowtimes.co.uk/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "grimsby-telegraph", + "provider": "Grimsby Telegraph", + "endpoint": "https://www.grimsbytelegraph.co.uk/news/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "herald-scotland-news", + "provider": "Herald Scotland - News", + "endpoint": "https://www.heraldscotland.com/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "huffpost-uk", + "provider": "Huff. Post UK", + "endpoint": "https://www.huffingtonpost.co.uk/feeds/index.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "larne-times", + "provider": "Larne Times", + "endpoint": "https://www.larnetimes.co.uk/news/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "manchester-evening-news", + "provider": "Manchester Evening News", + "endpoint": "https://www.manchestereveningnews.co.uk/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "news-uk", + "provider": "News UK", + "endpoint": "https://www.news.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "politics-co-uk", + "provider": "Politics.co.uk", + "endpoint": "https://www.politics.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "positive-news", + "provider": "Positive News", + "endpoint": "https://www.positive.news/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "scottish-field", + "provider": "Scottish Field", + "endpoint": "https://www.scottishfield.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-argus-news", + "provider": "The Argus", + "endpoint": "https://www.theargus.co.uk/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-bolton-news", + "provider": "The Bolton News - News", + "endpoint": "https://www.theboltonnews.co.uk/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "daily-record", + "provider": "Daily Record", + "endpoint": "https://www.dailyrecord.co.uk/news/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "northern-echo-news", + "provider": "The Northern Echo - News", + "endpoint": "https://www.thenorthernecho.co.uk/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-poke", + "provider": "The Poke", + "endpoint": "https://www.thepoke.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "scarborough-news", + "provider": "The Scarborough News", + "endpoint": "https://www.thescarboroughnews.co.uk/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-scotsman-news", + "provider": "The Scotsman - News", + "endpoint": "https://www.scotsman.com/news/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-york-press-news", + "provider": "The York Press - News", + "endpoint": "https://www.yorkpress.co.uk/news/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "wales-online", + "provider": "Wales. Online", + "endpoint": "https://www.walesonline.co.uk/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "a-luxury-travel-blog", + "provider": "A Luxury Travel Blog", + "endpoint": "https://www.aluxurytravelblog.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "age-uk-discover", + "provider": "Age UK", + "endpoint": "https://www.ageuk.org.uk/discover/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "alan-malcher", + "provider": "Alan Malcher", + "endpoint": "https://alanmalcher.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "britishbeautyblogger", + "provider": "British Beauty Blogger", + "endpoint": "https://britishbeautyblogger.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "buy-firewood-direct", + "provider": "Buy Firewood Direct", + "endpoint": "https://www.buyfirewooddirect.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "carly-rowena", + "provider": "Carly Rowena", + "endpoint": "https://feeds.feedburner.com/Carly. Rowena. Official", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "cherished-holiday-homes", + "provider": "Cherished Holiday Homes", + "endpoint": "https://cherishedholidayhomes.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "chique-home-living", + "provider": "Chique Home Living", + "endpoint": "https://chiquehomeliving.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "clubwise-blog", + "provider": "Club. Wise Blog", + "endpoint": "https://www.clubwise.com/clubwise-blog/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "disneyrollergirl", + "provider": "Disneyrollergirl", + "endpoint": "https://www.disneyrollergirl.net/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "fresh-design-blog", + "provider": "Fresh Design Blog", + "endpoint": "https://feeds2.feedburner.com/Fresh. Design. Blog", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "jollydeck", + "provider": "Jolly. Deck", + "endpoint": "https://www.jollydeck.com/resources/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "lifestylelinked", + "provider": "Life. Style. Linked", + "endpoint": "https://lifestylelinked.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "london-review-of-books", + "provider": "London Review of Books", + "endpoint": "https://www.lrb.co.uk/blog/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "marie-claire-uk", + "provider": "Marie Claire UK", + "endpoint": "https://www.marieclaire.co.uk/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "office-breaks", + "provider": "Office Breaks", + "endpoint": "https://office-breaks.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "on-the-think-of", + "provider": "On The Think Of", + "endpoint": "https://onthethinkof.home.blog/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "rocknroll-bride", + "provider": "Rock n Roll Bride", + "endpoint": "https://www.rocknrollbride.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "silverspoon-london", + "provider": "Silver. Spoon London", + "endpoint": "https://www.silverspoonlondon.co.uk/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "hnd-assignment-help-uk-medium", + "provider": "Stories by HND Assignment Help UK", + "endpoint": "https://medium.com/feed/@hndassigenmenthelp", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "tenura", + "provider": "Tenura", + "endpoint": "https://www.tenura.co.uk/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-curry-guy", + "provider": "The Curry Guy", + "endpoint": "https://greatcurryrecipes.net/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "real-talk-uk", + "provider": "The Real Talk UK", + "endpoint": "https://charleyjai-realtalk.blogspot.com/feeds/posts/default?alt=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "the-stratfordian", + "provider": "The Stratfordian", + "endpoint": "https://thestratfordian.co.uk/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "training-express", + "provider": "Training Express", + "endpoint": "https://www.trainingexpress.org.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "uk-constitutional-law-association", + "provider": "UK Constitutional Law Association", + "endpoint": "https://ukconstitutionallaw.org/blog/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "uk-fundraising-blog", + "provider": "UK Fundraising", + "endpoint": "https://fundraising.co.uk/category/blog/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "uk-human-rights-blog", + "provider": "UK Human Rights Blog", + "endpoint": "https://ukhumanrightsblog.com/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "vershd", + "provider": "Vershd", + "endpoint": "https://vershd.io/feed", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "vuelio-uk", + "provider": "Vuelio", + "endpoint": "https://www.vuelio.com/uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "ctc-sentinel", + "provider": "Combating Terrorism Center at West Point - CTC Sentinel", + "endpoint": "https://ctc.westpoint.edu/ctc-sentinel/", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "gw-program-extremism", + "provider": "George Washington University - Program on Extremism", + "endpoint": "https://extremism.gwu.edu/news", + "kind": "html", + "lane": "context", + "region": "us", + "healthScore": 17, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "", + "lastFailureAt": "", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "telegraph-world-news", + "provider": "The Telegraph a World News", + "endpoint": "https://www.telegraph.co.uk/world-news/", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 23, + "status": "auto-quarantined", + "reason": "Low health score – needs review", + "quarantinedAt": "", + "lastErrorCategory": "", + "lastErrorMessage": "", + "consecutiveFailures": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [], + "replacementSuggestion": "", + "reviewBy": "2026-04-26T14:11:10.963Z", + "lastFailureAt": "2026-04-19T14:11:10.963Z", + "lastCheckedAt": "2026-04-24T06:01:25.327Z" + }, + { + "id": "euronews-europe", + "provider": "Euronews a Europe", + "endpoint": "https://www.euronews.com/news/europe", + "kind": "html", + "lane": "context", + "region": "europe", + "healthScore": 24, + "status": "auto-quarantined", + "reason": "Health score degraded to 24 after repeated failures", + "quarantinedAt": "2026-04-23T03:28:47.210Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 406", + "consecutiveFailures": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 406", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "replacementSuggestion": "", + "reviewBy": "2026-04-30T03:28:47.210Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastCheckedAt": "2026-04-23T03:28:47.210Z" + } + ] } diff --git a/data/source-remediation-sweep.json b/data/source-remediation-sweep.json index 412ecfcb..d408b774 100644 --- a/data/source-remediation-sweep.json +++ b/data/source-remediation-sweep.json @@ -1,11 +1,120 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T15:22:20.804Z", - "totalSourceErrors": 0, - "byCategory": {}, - "byKind": {}, + "generatedAt": "2026-04-24T08:17:25.806Z", + "totalSourceErrors": 3, + "byCategory": { + "moved-temporarily": 2, + "timeout": 1 + }, + "byKind": { + "html": 3 + }, "machineReadableErrorCount": 0, - "htmlErrorCount": 0, - "top20": [], - "sources": [] + "htmlErrorCount": 3, + "top20": [ + { + "id": "austria-interior-ministry-news", + "provider": "Austrian Interior Ministry - News", + "endpoint": "https://www.bmi.gv.at/news.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "category": "moved-temporarily", + "statusKind": "", + "message": "HTTP 503", + "status": 503, + "rankScore": 4, + "suggestedAction": "update source endpoint to redirected final URL", + "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "sourceKind": "html", + "sourceLane": "context", + "sourceRegion": "", + "isMachineReadable": false + }, + { + "id": "austria-interior-ministry-rss-index", + "provider": "Austrian Interior Ministry - RSS Index", + "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "category": "moved-temporarily", + "statusKind": "", + "message": "HTTP 503", + "status": 503, + "rankScore": 4, + "suggestedAction": "update source endpoint to redirected final URL", + "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "sourceKind": "html", + "sourceLane": "context", + "sourceRegion": "", + "isMachineReadable": false + }, + { + "id": "uk-parliament-home-affairs-committee", + "provider": "UK Parliament a Home Affairs Committee (News)", + "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", + "finalUrl": "", + "category": "timeout", + "statusKind": "", + "message": "This operation was aborted", + "status": 0, + "rankScore": 1, + "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", + "replacementCandidate": "", + "sourceKind": "html", + "sourceLane": "oversight", + "sourceRegion": "", + "isMachineReadable": false + } + ], + "sources": [ + { + "id": "austria-interior-ministry-news", + "provider": "Austrian Interior Ministry - News", + "endpoint": "https://www.bmi.gv.at/news.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "category": "moved-temporarily", + "statusKind": "", + "message": "HTTP 503", + "status": 503, + "rankScore": 4, + "suggestedAction": "update source endpoint to redirected final URL", + "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "sourceKind": "html", + "sourceLane": "context", + "sourceRegion": "", + "isMachineReadable": false + }, + { + "id": "austria-interior-ministry-rss-index", + "provider": "Austrian Interior Ministry - RSS Index", + "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "category": "moved-temporarily", + "statusKind": "", + "message": "HTTP 503", + "status": 503, + "rankScore": 4, + "suggestedAction": "update source endpoint to redirected final URL", + "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "sourceKind": "html", + "sourceLane": "context", + "sourceRegion": "", + "isMachineReadable": false + }, + { + "id": "uk-parliament-home-affairs-committee", + "provider": "UK Parliament a Home Affairs Committee (News)", + "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", + "finalUrl": "", + "category": "timeout", + "statusKind": "", + "message": "This operation was aborted", + "status": 0, + "rankScore": 1, + "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", + "replacementCandidate": "", + "sourceKind": "html", + "sourceLane": "oversight", + "sourceRegion": "", + "isMachineReadable": false + } + ] } diff --git a/data/top-20-source-remediation.json b/data/top-20-source-remediation.json index b277b05c..7358ed1a 100644 --- a/data/top-20-source-remediation.json +++ b/data/top-20-source-remediation.json @@ -1,6 +1,58 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T15:22:20.804Z", - "totalSourceErrors": 0, - "top20": [] + "generatedAt": "2026-04-24T08:17:25.806Z", + "totalSourceErrors": 3, + "top20": [ + { + "id": "austria-interior-ministry-news", + "provider": "Austrian Interior Ministry - News", + "endpoint": "https://www.bmi.gv.at/news.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "category": "moved-temporarily", + "statusKind": "", + "message": "HTTP 503", + "status": 503, + "rankScore": 4, + "suggestedAction": "update source endpoint to redirected final URL", + "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "sourceKind": "html", + "sourceLane": "context", + "sourceRegion": "", + "isMachineReadable": false + }, + { + "id": "austria-interior-ministry-rss-index", + "provider": "Austrian Interior Ministry - RSS Index", + "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "category": "moved-temporarily", + "statusKind": "", + "message": "HTTP 503", + "status": 503, + "rankScore": 4, + "suggestedAction": "update source endpoint to redirected final URL", + "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "sourceKind": "html", + "sourceLane": "context", + "sourceRegion": "", + "isMachineReadable": false + }, + { + "id": "uk-parliament-home-affairs-committee", + "provider": "UK Parliament a Home Affairs Committee (News)", + "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", + "finalUrl": "", + "category": "timeout", + "statusKind": "", + "message": "This operation was aborted", + "status": 0, + "rankScore": 1, + "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", + "replacementCandidate": "", + "sourceKind": "html", + "sourceLane": "oversight", + "sourceRegion": "", + "isMachineReadable": false + } + ] } diff --git a/live-alerts.json b/live-alerts.json index cafb4ce2..d9e74c19 100644 --- a/live-alerts.json +++ b/live-alerts.json @@ -1,7 +1,7 @@ { - "generatedAt": "2026-04-24T15:22:20.804Z", - "sourceCount": 4, - "alertCount": 181, + "generatedAt": "2026-04-24T08:17:25.806Z", + "sourceCount": 176, + "alertCount": 179, "alerts": [ { "id": "met-police-latest-news-0", @@ -10245,56 +10245,6 @@ "corroborationCount": 1, "isDuplicateOf": "fusion-f289bcaeba8fd554" }, - { - "id": "fixture-atom-oversight-0", - "fusedIncidentId": "fusion-b4a9eb5890206d91", - "title": "Oversight Committee Schedules Counter-Terror Review Hearing", - "location": "Europe", - "region": "europe", - "lane": "oversight", - "severity": "moderate", - "status": "Update", - "actor": "Fixture Oversight Feed", - "subject": "Fixture Oversight Feed", - "happenedWhen": "04 Apr 2026, 11:10", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "Parliamentary committee confirms an oversight hearing on prevention strategy.", - "aiSummary": "Fixture Oversight Feed has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "Parliamentary committee confirms an oversight hearing on prevention strategy.", - "peopleInvolved": [], - "source": "Fixture Oversight Feed", - "sourceUrl": "https://fixtures.albertalert.local/oversight/1", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "04 Apr 2026, 11:10", - "lat": 50, - "lng": 10, - "major": false, - "publishedAt": "2026-04-04T10:10:00.000Z", - "keywordHits": [ - "terror" - ], - "terrorismHits": [ - "terror", - "counter-terror" - ], - "eventType": "oversight_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": -5.8, - "freshnessBucket": 0, - "freshUntil": "2026-04-12T10:10:00.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null - }, { "id": "uk-ncsc-news-4", "fusedIncidentId": "fusion-a4c8d412564d7890", @@ -10576,54 +10526,40 @@ ], "corroborationCount": 1, "isDuplicateOf": "fusion-a705408939c4c725" - }, - { - "id": "fixture-json-prevention-0", - "fusedIncidentId": "fusion-f5cb7bfa16235fcf", - "title": "Community Prevention Workshop Expanded Across Regions", - "location": "Europe", - "region": "international", - "lane": "prevention", - "severity": "moderate", - "status": "Update", - "actor": "Fixture Prevention Feed", - "subject": "Fixture Prevention Feed", - "happenedWhen": "04 Apr 2026, 10:30", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "Prevention specialists announced a new training cycle focused on reporting suspicious behavior.", - "aiSummary": "Fixture Prevention Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "Prevention specialists announced a new training cycle focused on reporting suspicious behavior.", - "peopleInvolved": [], - "source": "Fixture Prevention Feed", - "sourceUrl": "https://fixtures.albertalert.local/prevention/1", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "queueBucket": "prevention", - "time": "04 Apr 2026, 10:30", - "lat": 50, - "lng": 10, - "major": false, - "publishedAt": "2026-04-04T09:30:00.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "prevention_update", - "geoPrecision": "country", - "isOfficial": false, - "priorityScore": -8.3, - "freshnessBucket": 0, - "freshUntil": "2026-04-12T09:30:00.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null } ], - "sourceErrors": [], + "sourceErrors": [ + { + "id": "austria-interior-ministry-rss-index", + "provider": "Austrian Interior Ministry - RSS Index", + "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "status": 503, + "message": "HTTP 503", + "errorCode": "HTTP_STATUS_ERROR", + "category": "http-status-error" + }, + { + "id": "austria-interior-ministry-news", + "provider": "Austrian Interior Ministry - News", + "endpoint": "https://www.bmi.gv.at/news.aspx", + "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", + "status": 503, + "message": "HTTP 503", + "errorCode": "HTTP_STATUS_ERROR", + "category": "http-status-error" + }, + { + "id": "uk-parliament-home-affairs-committee", + "provider": "UK Parliament a Home Affairs Committee (News)", + "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", + "finalUrl": "", + "status": null, + "message": "This operation was aborted", + "errorCode": "FETCH_TIMEOUT", + "category": "timeout" + } + ], "restoreAudit": null, "geoLookupSnapshot": [ { @@ -12467,44 +12403,87 @@ "lng": 133.7751 } ], - "buildWarning": null, + "buildWarning": "Deferred 368 low-yield source(s) on health cooldown. | Guardrails breached: successful-source-floor-breached (runtime=283557ms, failedRate=0.017, successfulSources=7)", "runMetrics": { "schedulerMode": "candidate", "htmlBudget": 40, "htmlDomainCapPerRun": 3, - "htmlDomainUsage": {}, + "htmlDomainUsage": { + "news.met.police.uk": 2, + "www.avonandsomerset.police.uk": 2, + "www.scotland.police.uk": 1, + "www.psni.police.uk": 1, + "www.westyorkshirepolice.co.uk": 1, + "policie.gov.cz": 1, + "www.politie.nl": 2, + "mossos.gencat.cat": 1, + "www.policia.es": 1, + "www.policiajudiciaria.pt": 1, + "news.camden.gov.uk": 1, + "www.chelwest.nhs.uk": 1, + "www.hounslow.gov.uk": 1, + "www.merton.gov.uk": 1, + "northeastlondon.icb.nhs.uk": 1, + "www.walthamforest.gov.uk": 1, + "www.gov.uk": 3, + "www.mi5.gov.uk": 1, + "community-messaging.dc.police.uk": 1, + "www.bmi.gv.at": 1, + "www.unodc.org": 1, + "www.hillingdon.gov.uk": 1, + "www.homerton.nhs.uk": 1, + "www.kch.nhs.uk": 1, + "www.swlstg.nhs.uk": 1, + "news.npcc.police.uk": 1, + "www.ipco.org.uk": 1, + "hmiprobation.justiceinspectorates.gov.uk": 1, + "www.gov.scot": 1, + "www.dhs.gov": 1, + "www.state.gov": 1, + "ofac.treasury.gov": 1, + "www.verfassungsschutz.de": 1, + "www.interpol.int": 1, + "www.bexley.gov.uk": 1 + }, "coverage": { - "eligible": 4, - "scheduled": 4, - "initialScheduled": 1, - "continuationAttempted": 3, - "checked": 4, - "eligibleCheckedRate": 1, - "scheduledCheckedRate": 1 + "eligible": 547, + "scheduled": 179, + "initialScheduled": 98, + "continuationAttempted": 81, + "checked": 176, + "eligibleCheckedRate": 0.322, + "scheduledCheckedRate": 0.983 }, "freshnessSlaByTier": { "high": { - "count": 1, - "avgMinutes": 0, - "p95Minutes": 0 + "count": 7, + "avgMinutes": 5062, + "p95Minutes": 11000 + }, + "low": { + "count": 12, + "avgMinutes": 6733, + "p95Minutes": 9727 }, "medium": { - "count": 1, - "avgMinutes": 0, - "p95Minutes": 0 + "count": 20, + "avgMinutes": 4992, + "p95Minutes": 11000 } }, "failureReasons": { - "success": 2 + "success": 7, + "unchanged": 4, + "timeout-or-aborted": 4 }, "sourceRunStats": { - "totalConfiguredSources": 4, - "sourcesCheckedThisRun": 4, - "sourcesUpdatedThisRun": 2, - "sourcesFailedThisRun": 0, - "sourcesUnchangedThisRun": 0 + "totalConfiguredSources": 549, + "sourcesCheckedThisRun": 179, + "sourcesUpdatedThisRun": 7, + "sourcesFailedThisRun": 3, + "sourcesUnchangedThisRun": 4 }, - "runDurationMs": 202, + "runDurationMs": 283557, "playwrightFallback": { "attempts": 0, "successes": 0, @@ -12514,19 +12493,21 @@ "guardrails": { "maxRuntimeMs": 720000, "maxFailedSourceRate": 0.65, - "minSuccessfulSources": 1, - "targetSuccessfulSourcesPerRun": 1, - "failedSourceRate": 0, - "successfulSources": 2, - "violations": [], + "minSuccessfulSources": 8, + "targetSuccessfulSourcesPerRun": 60, + "failedSourceRate": 0.017, + "successfulSources": 7, + "violations": [ + "successful-source-floor-breached" + ], "midRun": { "throttleLevel": 0, - "totalAttempted": 4, - "totalFailed": 0, - "totalSuccessful": 2, - "failedRate": 0, - "successRate": 0.5, - "avgSourceDurationMs": 46, + "totalAttempted": 179, + "totalFailed": 3, + "totalSuccessful": 7, + "failedRate": 0.017, + "successRate": 0.039, + "avgSourceDurationMs": 1584, "criticalOnly": false, "skipPlaywright": false, "transitions": [] @@ -12536,187 +12517,22536 @@ "health": { "expectedRefreshMinutes": 30, "staleAfterMinutes": 50, - "lastAttemptedRefreshTime": "2026-04-24T15:22:20.804Z", + "lastAttemptedRefreshTime": "2026-04-24T08:17:25.806Z", "usedFallback": false, - "lastSuccessfulRefreshTime": "2026-04-24T15:22:20.804Z", - "lastSuccessfulRunId": "24897241588", - "lastSuccessfulRunNumber": "369", + "lastSuccessfulRefreshTime": "2026-04-24T08:17:25.806Z", + "lastSuccessfulRunId": "24879386517", + "lastSuccessfulRunNumber": "510", "lastSuccessfulRunAttempt": "1", - "lastSuccessfulHeadSha": "17cd1b3dbc94dbd11a38e97b6ac0cb1f8332b0ff", - "lastSuccessfulEvent": "dynamic", - "lastSuccessfulSourceCount": 4, - "sourceErrorCount": 0, - "hasWarnings": false, - "autoDeferredSourceCount": 0, - "autoDeferredSources": [], + "lastSuccessfulHeadSha": "4b91e9681a86e06ecb9443c627b7b278419b21ca", + "lastSuccessfulEvent": "schedule", + "lastSuccessfulSourceCount": 176, + "sourceErrorCount": 3, + "hasWarnings": true, + "autoDeferredSourceCount": 368, + "autoDeferredSources": [ + { + "id": "frontex-news-releases", + "provider": "Frontex a News Releases", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "bdk-rss", + "provider": "Bund Deutscher Kriminalbeamter - RSS", + "reason": "health-deprioritised", + "until": "2026-04-25T14:03:06.243Z", + "statusKind": "cooled_down" + }, + { + "id": "belgium-crisis-centre-news", + "provider": "Belgian National Crisis Centre - Newsroom", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "denmark-pet-news", + "provider": "Danish Security and Intelligence Service - News", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "ecfr-feeds-index", + "provider": "ECFR - Feeds", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "enisa-news", + "provider": "ENISA (EU Cybersecurity Agency) a News", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "enisa-rss-transition-page", + "provider": "ENISA - RSS Feeds Transition Notice", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "euiss-home", + "provider": "EU Institute for Security Studies", + "reason": "health-deprioritised", + "until": "2026-04-24T18:01:25.327Z", + "statusKind": "cooled_down" + }, + { + "id": "euractiv-security-rss", + "provider": "BBC News - Europe", + "reason": "health-deprioritised", + "until": "2026-04-25T14:03:06.243Z", + "statusKind": "cooled_down" + }, + { + "id": "eurojust-press-news-html", + "provider": "Eurojust - Press Releases and News", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "eurojust-press-releases", + "provider": "Eurojust - Press Releases", + "reason": "health-deprioritised", + "until": "2026-04-25T18:02:43.923Z", + "statusKind": "cooled_down" + }, + { + "id": "europol-media-press", + "provider": "Europol a Media and Press", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "europol-newsroom-html", + "provider": "Europol - Newsroom", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "finland-supo-news", + "provider": "Finnish Security Intelligence Service - News", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "german-bfv-news", + "provider": "German BfV - Press", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "german-interior-ministry-press", + "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", + "reason": "health-deprioritised", + "until": "2026-04-25T10:13:21.253Z", + "statusKind": "cooled_down" + }, + { + "id": "icct-home", + "provider": "ICCT - Home", + "reason": "health-deprioritised", + "until": "2026-04-24T18:01:25.327Z", + "statusKind": "cooled_down" + }, + { + "id": "nctv-english-rss", + "provider": "NCTV Netherlands - English RSS", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "paris-prefecture-police-rss-page", + "provider": "Paris Prefecture of Police - RSS", + "reason": "health-deprioritised", + "until": "2026-04-25T10:13:21.253Z", + "statusKind": "cooled_down" + }, + { + "id": "spain-interior-ministry-news", + "provider": "Spanish Ministry of the Interior - Press", + "reason": "health-deprioritised", + "until": "2026-04-25T10:13:21.253Z", + "statusKind": "cooled_down" + }, + { + "id": "statewatch-news", + "provider": "Statewatch - News", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + }, + { + "id": "breakingnews-ie", + "provider": "BreakingNews.ie", + "reason": "health-deprioritised", + "until": "2026-04-24T18:01:25.327Z", + "statusKind": "cooled_down" + }, + { + "id": "independent-ie", + "provider": "Independent.ie", + "reason": "health-deprioritised", + "until": "2026-04-24T18:01:25.327Z", + "statusKind": "cooled_down" + }, + { + "id": "belgian-federal-police-news", + "provider": "Belgian Federal Police - News", + "reason": "health-deprioritised", + "until": "2026-04-25T11:47:27.254Z", + "statusKind": "cooled_down" + }, + { + "id": "ertzaintza-news", + "provider": "Ertzaintza - News", + "reason": "health-deprioritised", + "until": "2026-04-24T14:59:55.048Z", + "statusKind": "cooled_down" + } + ], "operationalDeferredSourceCount": 0, "operationalDeferredSources": [], "sourceRunStats": { - "totalConfiguredSources": 4, - "sourcesCheckedThisRun": 4, - "sourcesUpdatedThisRun": 2, - "sourcesFailedThisRun": 0, - "sourcesUnchangedThisRun": 0 + "totalConfiguredSources": 549, + "sourcesCheckedThisRun": 179, + "sourcesUpdatedThisRun": 7, + "sourcesFailedThisRun": 3, + "sourcesUnchangedThisRun": 4 }, "extraMetrics": { "schedulerMode": "candidate", "coverage": { - "eligible": 4, - "scheduled": 4, - "initialScheduled": 1, - "continuationAttempted": 3, - "checked": 4, - "eligibleCheckedRate": 1, - "scheduledCheckedRate": 1 + "eligible": 547, + "scheduled": 179, + "initialScheduled": 98, + "continuationAttempted": 81, + "checked": 176, + "eligibleCheckedRate": 0.322, + "scheduledCheckedRate": 0.983 }, "freshnessSlaByTier": { "high": { - "count": 1, - "avgMinutes": 0, - "p95Minutes": 0 + "count": 7, + "avgMinutes": 5062, + "p95Minutes": 11000 + }, + "low": { + "count": 12, + "avgMinutes": 6733, + "p95Minutes": 9727 }, "medium": { - "count": 1, - "avgMinutes": 0, - "p95Minutes": 0 + "count": 20, + "avgMinutes": 4992, + "p95Minutes": 11000 } }, "failureReasons": { - "success": 2 + "success": 7, + "unchanged": 4, + "timeout-or-aborted": 4 }, "sourceRunStats": { - "totalConfiguredSources": 4, - "sourcesCheckedThisRun": 4, - "sourcesUpdatedThisRun": 2, - "sourcesFailedThisRun": 0, - "sourcesUnchangedThisRun": 0 + "totalConfiguredSources": 549, + "sourcesCheckedThisRun": 179, + "sourcesUpdatedThisRun": 7, + "sourcesFailedThisRun": 3, + "sourcesUnchangedThisRun": 4 }, "playwrightFallback": { "attempts": 0, "successes": 0 }, - "guardrailViolations": [], + "guardrailViolations": [ + "successful-source-floor-breached" + ], "midRunGuardrail": { "throttleLevel": 0, - "totalAttempted": 4, - "totalFailed": 0, - "totalSuccessful": 2, - "failedRate": 0, - "successRate": 0.5, - "avgSourceDurationMs": 46, + "totalAttempted": 179, + "totalFailed": 3, + "totalSuccessful": 7, + "failedRate": 0.017, + "successRate": 0.039, + "avgSourceDurationMs": 1584, "criticalOnly": false, "skipPlaywright": false, "transitions": [] } }, "sourceHealth": { - "fixture-rss-incidents": { - "provider": "Fixture Incidents Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T15:22:20.804Z", + "euaa-news": { + "provider": "EUAA (EU Agency for Asylum) - Press Releases", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", "lastBuiltCount": 0, "successfulRuns": 0, - "emptyRuns": 1, + "emptyRuns": 80, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, + "consecutiveEmptyRuns": 80, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T15:22:20.804Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 77, - "quarantined": false, + "healthScore": 0, + "quarantined": true, "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T16:19:20.804Z" + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" }, - "fixture-rss-context": { - "provider": "Fixture Context Feed", - "lane": "context", + "eulisa-news-events": { + "provider": "eu-LISA - News and Events (RSS)", + "lane": "border", "kind": "rss", - "lastCheckedAt": "2026-04-24T15:22:20.804Z", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", "lastBuiltCount": 0, "successfulRuns": 0, - "emptyRuns": 1, + "emptyRuns": 80, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, + "consecutiveEmptyRuns": 80, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T15:22:20.804Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 77, - "quarantined": false, + "healthScore": 0, + "quarantined": true, "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T17:59:20.804Z" + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" }, - "fixture-atom-oversight": { - "provider": "Fixture Oversight Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T15:22:20.804Z", - "lastBuiltCount": 1, - "successfulRuns": 1, + "frontex-news-releases": { + "provider": "Frontex a News Releases", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "austria-interior-ministry-news": { + "provider": "Austrian Interior Ministry - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 79, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 503", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-24T08:17:25.806Z" + } + ], + "cooldownUntil": "2026-04-26T08:17:25.806Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T08:17:25.806Z" + }, + "austria-interior-ministry-rss-index": { + "provider": "Austrian Interior Ministry - RSS Index", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 79, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 503", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-24T08:17:25.806Z" + } + ], + "cooldownUntil": "2026-04-26T08:17:25.806Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T08:17:25.806Z" + }, + "bdk-rss": { + "provider": "Bund Deutscher Kriminalbeamter - RSS", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "belgium-crisis-centre-news": { + "provider": "Belgian National Crisis Centre - Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-17T20:09:53.653Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T20:09:53.653Z", + "quarantineReason": "Health score degraded to 5 after repeated failures", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "denmark-pet-news": { + "provider": "Danish Security and Intelligence Service - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ecfr-feeds-index": { + "provider": "ECFR - Feeds", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "enisa-news": { + "provider": "ENISA (EU Cybersecurity Agency) a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "enisa-rss-transition-page": { + "provider": "ENISA - RSS Feeds Transition Notice", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "euiss-home": { + "provider": "EU Institute for Security Studies", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, + "consecutiveEmptyRuns": 21, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T15:22:20.804Z", + "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 90, - "quarantined": false, + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T16:00:20.804Z" + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" }, - "fixture-json-prevention": { - "provider": "Fixture Prevention Feed", - "lane": "prevention", - "kind": "json", - "lastCheckedAt": "2026-04-24T15:22:20.804Z", - "lastBuiltCount": 1, - "successfulRuns": 1, + "euractiv-security-rss": { + "provider": "BBC News - Europe", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eurojust-press-news-html": { + "provider": "Eurojust - Press Releases and News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eurojust-press-releases": { + "provider": "Eurojust - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 72, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T16:07:40.227Z", + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "europol-media-press": { + "provider": "Europol a Media and Press", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "europol-news-rss": { + "provider": "Europol - Newsroom (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, + "consecutiveEmptyRuns": 80, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T15:22:20.804Z", + "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 90, - "quarantined": false, + "healthScore": 0, + "quarantined": true, "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:50:20.804Z" + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "europol-newsroom-html": { + "provider": "Europol - Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "finland-supo-news": { + "provider": "Finnish Security Intelligence Service - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "german-bfv-news": { + "provider": "German BfV - Press", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "german-interior-ministry-press": { + "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 400", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Health score degraded to 20 after repeated failures", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "icct-home": { + "provider": "ICCT - Home", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nctv-english-rss": { + "provider": "NCTV Netherlands - English RSS", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "paris-prefecture-police-rss-page": { + "provider": "Paris Prefecture of Police - RSS", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "spain-interior-ministry-news": { + "provider": "Spanish Ministry of the Interior - Press", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "statewatch-news": { + "provider": "Statewatch - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "breakingnews-ie": { + "provider": "BreakingNews.ie", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "independent-ie": { + "provider": "Independent.ie", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "belgian-federal-police-news": { + "provider": "Belgian Federal Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T11:47:27.254Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 11, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T11:47:27.254Z", + "lastEmptyAt": "2026-04-23T10:13:21.253Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T11:47:27.254Z" + } + ], + "cooldownUntil": "2026-04-25T11:47:27.254Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-25T11:47:27.254Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "czech-police-news": { + "provider": "Police of the Czech Republic - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "dutch-police-rss-index": { + "provider": "Politie.nl - RSS", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "ertzaintza-news": { + "provider": "Ertzaintza - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "finland-police-news": { + "provider": "Finnish Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "german-bka-press": { + "provider": "German BKA - Press Releases (2026 archive)", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-17T20:09:53.653Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T20:09:53.653Z", + "quarantineReason": "Health score degraded to 5 after repeated failures", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "german-bka-press-releases-de": { + "provider": "BKA Germany - Press Releases", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T17:39:27.641Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 15, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastEmptyAt": "2026-04-22T16:17:11.443Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T07:32:24.475Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "cooldownUntil": "2026-04-24T17:39:27.641Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T08:04:04.612Z", + "quarantineReason": "Infrastructure instability — mixed timeout and network errors; auto-retry likely to recover", + "nextFetchAt": "2026-04-24T17:39:27.641Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "guardia-civil-news": { + "provider": "El Pais English - Guardia Civil", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "not-found-404", + "lastErrorMessage": "HTTP 404", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "mossos-news": { + "provider": "Mossos d'Esquadra - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "paris-prefecture-police-press-releases": { + "provider": "Paris Prefecture of Police - Press Releases", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "policia-nacional-news": { + "provider": "Policia Nacional - Press", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T18:05:04.781Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-17T20:09:53.653Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-19T18:05:04.781Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T20:09:53.653Z", + "quarantineReason": "Health score degraded to 5 after repeated failures", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "romanian-police-news": { + "provider": "Romanian Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "curia-press-rss-en": { + "provider": "Court of Justice of the European Union - RSS (EN/FR)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 65, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T23:56:26.571Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-25T03:28:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T03:28:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eppo-news-node-7": { + "provider": "European Public Prosecutor's Office - News (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 75, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-cellar-rss-atom": { + "provider": "Publications Office of the European Union (CELLAR) a RSS/Atom Feeds", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 13, + "emptyRuns": 61, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T23:56:26.571Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-25T03:28:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T03:28:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-commission-counter-terrorism-measures-2026": { + "provider": "European Commission - Counter Terrorism Measures 2026", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-commission-home-affairs-topic": { + "provider": "European Commission - Home Affairs", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-commission-presscorner-home": { + "provider": "Council of the EU - Press Releases (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-council-fight-against-terrorism": { + "provider": "Council of the EU - Fight Against Terrorism", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-council-jha-meetings": { + "provider": "Council of the EU - JHA Press Releases", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 72, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T16:07:40.227Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-council-jha-register-rss": { + "provider": "Council of the EU - Latest Documents RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-council-press-releases": { + "provider": "Council of the European Union a Press Releases (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-council-press-releases-html": { + "provider": "Council of the EU - Press Releases", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 75, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-council-rss-index": { + "provider": "Council of the EU - RSS Index", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-ct-coordinator": { + "provider": "EU Counter-Terrorism Coordinator a Council of the EU", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-ejustice-news-rss": { + "provider": "European e-Justice - News RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 57, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 34, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-18T13:27:18.679Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-18T13:27:18.679Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-eppo-news": { + "provider": "European Public Prosecutor's Office - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-fra-rss": { + "provider": "EU Agency for Fundamental Rights (FRA) a RSS", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-21T11:46:02.615Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-home-affairs-news": { + "provider": "European Commission a Home Affairs News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-olaf-news": { + "provider": "OLAF (EU Anti-Fraud Office) a News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eu-security-union-strategy": { + "provider": "European Commission a Security Union Strategy", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eucrim-counter-terrorism-agenda": { + "provider": "eucrim - Commission Counter Terrorism Agenda", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eucrim-judicial-counter-terrorism-register": { + "provider": "eucrim - Judicial Counter Terrorism Register", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eurojust-publications": { + "provider": "Eurojust a Publications (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 1, + "successfulRuns": 105, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "eurojust-rss-feeds-page": { + "provider": "Eurojust - RSS Feeds", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "europarl-committee-libe": { + "provider": "European Parliament - LIBE Press Releases", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 75, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "europarl-committee-sede": { + "provider": "European Parliament - SEDE Press Releases", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "europarl-pressreleases-committees": { + "provider": "European Parliament a Press Releases (Committees) (RSS)", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "europol-tesat-report": { + "provider": "Europol - TESAT Report", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "fra-rss": { + "provider": "Human Rights Watch - News RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "europol-eu-iru": { + "provider": "Europol a EU Internet Referral Unit (EU IRU)", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "isd-global-publications": { + "provider": "ISD - Publications", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ncsc-nl-rss": { + "provider": "NCSC Netherlands - RSS", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "eu-council-terrorism-sanctions": { + "provider": "Council of the EU - Sanctions Against Terrorism", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "unhcr-europe-news": { + "provider": "UNHCR Europe a News", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "clingendael-publications": { + "provider": "Clingendael Institute a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "dw-europe-rss": { + "provider": "Deutsche Welle a Europe (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ecfr-publications": { + "provider": "European Council on Foreign Relations (ECFR) a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "euronews-europe": { + "provider": "Euronews a Europe", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 28, + "emptyRuns": 21, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-22T22:53:26.529Z", + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 406", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 406", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-24T13:04:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 24, + "quarantined": true, + "quarantinedAt": "2026-04-23T03:28:47.210Z", + "quarantineReason": "Health score degraded to 24 after repeated failures", + "nextFetchAt": "2026-04-24T13:04:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "financial-times-world": { + "provider": "Financial Times a World", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "france24-europe-rss": { + "provider": "France 24 a Europe (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T05:47:56.833Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 11, + "failedRuns": 4, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T05:47:56.833Z", + "lastEmptyAt": "2026-04-17T22:12:37.099Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T11:15:29.208Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T16:03:49.134Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T06:12:01.477Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T05:47:56.833Z" + } + ], + "cooldownUntil": "2026-04-25T05:47:56.833Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-19T16:03:49.134Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T05:47:56.833Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "french-interior-ministry-news": { + "provider": "French Ministry of the Interior - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "icct-perspectives-on-terrorism": { + "provider": "Perspectives on Terrorism (ICCT) a Journal", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "icct-publications": { + "provider": "International Centre for Counter-Terrorism (ICCT) - Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "netherlands-nctv-news": { + "provider": "Dutch NCTV - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "norway-pst-news": { + "provider": "Norwegian Government - News and Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 72, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T16:07:40.227Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "politico-europe": { + "provider": "Politico Europe", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rte-ireland-news-rss": { + "provider": "RTE News - Ireland (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 2, + "emptyRuns": 9, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T11:47:27.254Z", + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 5, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T11:17:25.806Z" + }, + "switzerland-fedpol-news": { + "provider": "Swiss fedpol - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T21:59:30.032Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 5, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T21:59:30.032Z", + "lastEmptyAt": "2026-04-22T20:37:31.462Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-22T21:59:30.032Z" + } + ], + "cooldownUntil": "2026-04-24T21:59:30.032Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T21:59:30.032Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "telegraph-world-news": { + "provider": "The Telegraph a World News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 30, + "emptyRuns": 27, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 4, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T16:07:40.227Z", + "lastFailureAt": "2026-04-19T14:11:10.963Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T08:15:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 23, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T08:15:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "vox-pol-publications": { + "provider": "VOX-Pol Network a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "french-gendarmerie-news": { + "provider": "Gendarmerie Nationale - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "french-police-nationale-news": { + "provider": "Police Nationale - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ireland-gardai-press": { + "provider": "An Garda Siochana - Press Releases", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "netherlands-police-news": { + "provider": "Dutch National Police - News (EN)", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "paris-police-prefecture-news": { + "provider": "France24 - France (RSS)", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "portugal-pj-news": { + "provider": "Policia Judiciaria Portugal - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 43, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T15:59:44.503Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T19:18:33.309Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T15:59:44.503Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "portugal-psp-news": { + "provider": "The Portugal News - Crime", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "coe-counter-terrorism": { + "provider": "Council of Europe a Counter-Terrorism", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "echr-key-judgments-rss": { + "provider": "European Court of Human Rights - Key Judgments RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-22T17:39:27.641Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 60, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastEmptyAt": "2026-04-22T16:17:11.443Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 400", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 400", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "cooldownUntil": "2026-04-24T17:39:27.641Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T17:39:27.641Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "echr-press-releases-rss": { + "provider": "European Court of Human Rights - Press Releases RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "french-justice-ministry-news": { + "provider": "French Ministry of Justice - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "netherlands-prosecution-news": { + "provider": "Dutch Public Prosecution Service - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bfv-de-english": { + "provider": "BfV service page (Federal Office for the Protection of the Constitution)", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 67, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 56, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-17T11:07:28.674Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-17T11:07:28.674Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "dsn-at-english": { + "provider": "DSN Austria - Aktuelles", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "isd-global": { + "provider": "Institute for Strategic Dialogue (ISD) a Articles & Reports", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ocam-be-english": { + "provider": "CUTA (Belgium) threat analysis", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 19, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T16:07:40.227Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T22:54:57.851Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "pet-dk-english": { + "provider": "PET (Denmark) a English News", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "pst-no-english": { + "provider": "PST (Norway) English reporting page", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ran-network": { + "provider": "RUSI - Terrorism and Conflict", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "sapo-se-english": { + "provider": "Swedish Security Service English news", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "supo-fi-english": { + "provider": "SUPO Finland news and press releases", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "iom-news": { + "provider": "IOM (International Organization for Migration) a News", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "acled-updates": { + "provider": "ACLED a Updates and Analysis", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "aljazeera-news-rss": { + "provider": "Al Jazeera English a Top Stories (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 24, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 5, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T10:13:21.253Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 3, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T11:55:25.806Z" + }, + "ap-top-news": { + "provider": "BBC News - Top Stories", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bbc-news-world": { + "provider": "BBC News a World", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bbc-news-world-legacy": { + "provider": "BBC News a World (Legacy RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bellingcat": { + "provider": "Bellingcat a Investigations", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chatham-house-rss": { + "provider": "Chatham House a Research & Commentary (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 7, + "emptyRuns": 11, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T14:03:06.243Z", + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 40, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chathamhouse-events": { + "provider": "Chatham House a Events (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chathamhouse-intl-security-feed": { + "provider": "Chatham House a International Security Programme (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 5, + "emptyRuns": 28, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T14:03:06.243Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 46, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chathamhouse-news-releases": { + "provider": "Chatham House a News Releases (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "counter-extremism-project-news": { + "provider": "Counter Extremism Project a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 5, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T11:15:29.208Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T12:14:24.733Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T21:04:21.166Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "crisis-group": { + "provider": "International Crisis Group a Research & Analysis", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "crisis-group-europe": { + "provider": "International Crisis Group a Europe (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "global-initiative-news": { + "provider": "Global Initiative Against Transnational Organized Crime a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "interpol-news-events": { + "provider": "INTERPOL a News and Events", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "just-security": { + "provider": "Just Security a Law, Rights & National Security", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 3, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T23:55:39.351Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T09:29:55.311Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T04:05:33.139Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T09:29:55.311Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "lawfare-blog": { + "provider": "Just Security - National Security Analysis", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "long-war-journal": { + "provider": "Long War Journal a News Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T22:53:56.180Z", + "lastBuiltCount": 0, + "successfulRuns": 6, + "emptyRuns": 17, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", + "lastFailureAt": "2026-04-18T00:05:41.686Z", + "lastEmptyAt": "2026-04-23T22:53:56.180Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T10:53:56.180Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 29, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T10:53:56.180Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nato-news-rss": { + "provider": "NATO a News (RSS)", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "occrp-news": { + "provider": "OCCRP a Organized Crime and Corruption Reporting Project", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T07:21:41.099Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T08:39:19.161Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "osce-press-releases": { + "provider": "OSCE a Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "resolve-network-research": { + "provider": "RESOLVE Network a Research", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 503", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "http-status-error", + "message": "HTTP 503", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Health score degraded to 17 after repeated failures", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "reuters-uk": { + "provider": "Reuters a UK News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rferl-security-news-rss": { + "provider": "Radio Free Europe/Radio Liberty a Security (RSS)", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T22:53:56.180Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 10, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastEmptyAt": "2026-04-23T22:53:56.180Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T07:21:41.099Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T08:39:19.161Z" + } + ], + "cooldownUntil": "2026-04-24T10:53:56.180Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T10:53:56.180Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "soufan-center-intelbrief": { + "provider": "The Soufan Center a IntelBrief", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tech-against-terrorism-podcast": { + "provider": "Tech Against Terrorism - Podcast", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tony-blair-institute-news": { + "provider": "Tony Blair Institute for Global Change a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "unodc-news": { + "provider": "UNODC (UN Office on Drugs and Crime) a Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "war-on-the-rocks": { + "provider": "War on the Rocks a National Security & CT Analysis", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gctf-news": { + "provider": "Global Counterterrorism Forum (GCTF) a News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T04:05:33.139Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "unoct-news": { + "provider": "UN Office of Counter-Terrorism (UNOCT) - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "unsc-counter-terrorism-committee": { + "provider": "UN Security Council - Counter-Terrorism Committee (CTC) Updates", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gnet-artificial-intelligence-rss": { + "provider": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 76, + "emptyRuns": 12, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T20:17:25.806Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 64, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T20:17:25.806Z" + }, + "gnet-radicalisation-rss": { + "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-16T16:57:11.406Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T21:08:30.446Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gnet-youth-rss": { + "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-22T17:39:27.641Z", + "lastBuiltCount": 0, + "successfulRuns": 5, + "emptyRuns": 0, + "failedRuns": 10, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T08:04:04.612Z", + "lastFailureAt": "2026-04-22T17:39:27.641Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T11:07:28.674Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T12:15:37.169Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T22:00:46.520Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T17:16:47.386Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T17:39:27.641Z" + } + ], + "cooldownUntil": "2026-04-24T17:39:27.641Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T22:00:46.520Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T17:39:27.641Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tech-against-terrorism": { + "provider": "Tech Against Terrorism a Blog", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tech-against-terrorism-home": { + "provider": "Tech Against Terrorism - Home", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "fatf-news": { + "provider": "Financial Action Task Force (FATF) a News", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "interpol-notices": { + "provider": "INTERPOL a Notices", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "unsc-1267-press-releases": { + "provider": "UN Security Council - ISIL/Da'esh & Al-Qaeda Sanctions Committee Press Releases", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "unsc-consolidated-list": { + "provider": "UN Security Council - Consolidated Sanctions List Updates (RSS)", + "lane": "sanctions", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "barking-dagenham-council-news": { + "provider": "Barking and Dagenham Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 2, + "failedRuns": 6, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 4, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "barnet-council-news": { + "provider": "Barnet Post", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "barts-health-news": { + "provider": "Barts Health NHS Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T08:09:12.931Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 9, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T08:09:12.931Z", + "lastEmptyAt": "2026-04-23T05:47:56.833Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T08:09:12.931Z" + } + ], + "cooldownUntil": "2026-04-25T08:09:12.931Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-25T08:09:12.931Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bbc-news-london-rss": { + "provider": "BBC News - London RSS", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 28, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 17, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-18T23:43:16.267Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 49, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bexley-council-news": { + "provider": "Bexley Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "brent-council-news": { + "provider": "Brent Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "bromley-council-news": { + "provider": "Bromley Council a Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "camden-council-news": { + "provider": "Camden Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "chelsea-westminster-news": { + "provider": "Chelsea and Westminster Hospital NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "city-of-london-police-fraud-reporting": { + "provider": "City of London Police - Fraud Reporting", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cnwl-news": { + "provider": "Central and North West London NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "croydon-council-news": { + "provider": "Croydon Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "ealing-council-news": { + "provider": "Ealing Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 57, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 29, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": "2026-04-18T21:09:53.488Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T21:09:53.488Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "east-london-nhs-news": { + "provider": "East London NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "enfield-council-news": { + "provider": "Enfield Council a News and Events", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gosh-news": { + "provider": "Great Ormond Street Hospital a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "guys-st-thomas-news": { + "provider": "Guy's and St Thomas' NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "hackney-council-news": { + "provider": "Hackney Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "hammersmith-fulham-news": { + "provider": "Hammersmith and Fulham Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 2, + "failedRuns": 6, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "haringey-council-news": { + "provider": "Haringey Community Press", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "harrow-council-news": { + "provider": "Harrow Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "havering-council-news": { + "provider": "Havering Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "heathrow-media-centre": { + "provider": "Heathrow a Media Centre", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "hillingdon-council-news": { + "provider": "Hillingdon Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "homerton-healthcare-news": { + "provider": "Homerton Healthcare NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "hounslow-council-news": { + "provider": "Hounslow Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "imperial-healthcare-news": { + "provider": "Imperial College Healthcare NHS Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "islington-council-news": { + "provider": "Islington Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "kensington-chelsea-newsroom": { + "provider": "Royal Borough of Kensington and Chelsea a Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "kings-college-hospital-news": { + "provider": "King's College Hospital NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "kingston-council-news": { + "provider": "Kingston Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 67, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-21T08:24:19.478Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "lambeth-council-news": { + "provider": "Lambeth Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "lewisham-council-news": { + "provider": "Salamander News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "lnwh-news": { + "provider": "London North West University Healthcare NHS Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "london-ambulance-news": { + "provider": "London Ambulance Service a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-city-airport-media-centre": { + "provider": "London City Airport a Media Centre", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-councils-news": { + "provider": "London Councils a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-fire-brigade-news": { + "provider": "London Fire Brigade a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-gov-home": { + "provider": "London.gov.uk", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-gov-press-releases-html": { + "provider": "London.gov.uk - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-gov-rss-80603": { + "provider": "Greater London Authority a RSS Feed 80603", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "london-gov-rss-80632": { + "provider": "Greater London Authority a RSS Feed 80632", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "mayor-of-london-press-releases": { + "provider": "Mayor of London a Press Releases", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "merton-council-news": { + "provider": "Merton Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 67, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-21T08:24:19.478Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "met-police-the-met-tag": { + "provider": "Metropolitan Police - The Met Tag", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 13, + "emptyRuns": 76, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "moorfields-news": { + "provider": "Moorfields Eye Hospital NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "nelft-news": { + "provider": "North East London NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "newham-council-news": { + "provider": "Newham Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "nhs-london-ncl-news": { + "provider": "NHS North Central London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nhs-london-nel-news": { + "provider": "NHS North East London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 67, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-21T10:07:46.576Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T10:07:46.576Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "nhs-london-nwl-news": { + "provider": "NHS North West London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "nhs-london-sel-news": { + "provider": "NHS South East London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nhs-london-swl-news": { + "provider": "NHS South West London a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "north-middlesex-news": { + "provider": "North Middlesex University Hospital a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "oxleas-news": { + "provider": "Oxleas NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "port-of-london-authority-news": { + "provider": "Port of London Authority a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "redbridge-council-news": { + "provider": "Redbridge Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "richmond-council-news": { + "provider": "Richmond Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 65, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T23:56:26.571Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-25T03:28:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T03:28:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "royal-free-london-news": { + "provider": "Royal Free London NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "royal-greenwich-news": { + "provider": "Royal Borough of Greenwich a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 2, + "failedRuns": 6, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 4, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "slam-news": { + "provider": "South London and Maudsley NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "southwark-newsroom": { + "provider": "Southwark Council a Newsroom", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "st-georges-news": { + "provider": "St George's University Hospitals NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "sutton-council-news": { + "provider": "Sutton Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "swlstg-news": { + "provider": "South West London and St George's Mental Health NHS Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "tavistock-portman-news": { + "provider": "Tavistock and Portman NHS Foundation Trust a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tfl-press-releases": { + "provider": "Transport for London - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tfl-press-releases-html": { + "provider": "Transport for London - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tower-hamlets-council-news": { + "provider": "Tower Hamlets Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uclh-news": { + "provider": "University College London Hospitals a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 58, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-21T11:46:02.615Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "waltham-forest-council-news": { + "provider": "Waltham Forest Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "wandsworth-council-news": { + "provider": "Wandsworth Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 65, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T23:56:26.571Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-25T03:28:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T03:28:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "westminster-city-council-news": { + "provider": "Westminster City Council a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "whittington-health-news": { + "provider": "Whittington Health a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 5, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "city-of-london-police-news": { + "provider": "National Crime Agency - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "city-of-london-police-news-html": { + "provider": "City of London Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "city-of-london-police-newsroom": { + "provider": "Metropolitan Police Service - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ct-policing-london": { + "provider": "Counter Terrorism Policing London", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "met-police-latest-news": { + "provider": "Metropolitan Police - Latest News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 1, + "successfulRuns": 106, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "met-police-news": { + "provider": "Metropolitan Police Service a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 1, + "successfulRuns": 106, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "london-assembly-press-releases": { + "provider": "London Assembly a Press Releases", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "mopac-html": { + "provider": "Mayor's Office for Policing and Crime", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-resilience": { + "provider": "Resilience First - Latest Updates", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T23:56:26.571Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 17, + "failedRuns": 4, + "consecutiveFailures": 2, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T23:56:26.571Z", + "lastEmptyAt": "2026-04-20T11:00:44.891Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T23:15:54.554Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-22T23:56:26.571Z" + } + ], + "cooldownUntil": "2026-04-24T23:56:26.571Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T23:56:26.571Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gov-uk-fcdo-travel-advice": { + "provider": "FCDO a Foreign Travel Advice Index", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-border-force": { + "provider": "Border Force (UK) a Announcements and Publications", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-ukvi": { + "provider": "UK Visas and Immigration a Announcements and Publications", + "lane": "border", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "bbc-news-england-legacy": { + "provider": "BBC News a England (Legacy RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 29, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 18, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-18T11:15:29.208Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 3, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bbc-news-front-page-legacy": { + "provider": "BBC News a Front Page (Legacy RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 25, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 15, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-17T22:12:37.099Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bbc-news-uk": { + "provider": "BBC News a UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 26, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 16, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-17T22:12:37.099Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bbc-news-uk-politics-legacy": { + "provider": "BBC News a UK Politics (Legacy RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 10, + "failedRuns": 4, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-17T09:48:51.002Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T03:30:54.684Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T15:59:44.503Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-19T03:30:54.684Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chatham-house-home": { + "provider": "Chatham House", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chatham-house-security-defence": { + "provider": "Chatham House - Security and Defence", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "essex-police-news": { + "provider": "Essex Police a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gov-uk-defence-intelligence": { + "provider": "UK Defence Intelligence a GOV.UK", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-terrorism-search": { + "provider": "GOV.UK Search - Terrorism", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "guardian-uk": { + "provider": "The Guardian a UK News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T21:58:03.349Z", + "lastBuiltCount": 0, + "successfulRuns": 23, + "emptyRuns": 37, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-23T05:47:56.833Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-23T21:58:03.349Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T09:58:03.349Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 48, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:58:03.349Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "henry-jackson-society-news": { + "provider": "RUSI - Terrorism and Conflict", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "hope-not-hate-home": { + "provider": "Hope not hate podcast", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "institute-global-home": { + "provider": "Institute for Global Change", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "kent-police-news": { + "provider": "Kent Police a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "mi5-news": { + "provider": "National Crime Agency - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "mi5-news-rss-direct": { + "provider": "MI5 - News RSS", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "national-crime-agency-news": { + "provider": "National Crime Agency a News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "npcc-releases": { + "provider": "National Police Chiefs' Council - Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "police-uk-all-crime-leicester": { + "provider": "Police.uk - Street Crime Around Leicester", + "lane": "context", + "kind": "json", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 79, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 73, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T23:55:39.351Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T23:55:39.351Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "police-uk-stops-force-leicestershire": { + "provider": "Police.uk - Force Stops (Leicestershire)", + "lane": "context", + "kind": "json", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "police-uk-stops-street-leicester": { + "provider": "Police.uk - Street Stops Around Leicester", + "lane": "context", + "kind": "json", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "report-fraud-home": { + "provider": "Report Fraud", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "report-fraud-newsroom": { + "provider": "Report Fraud - Newsroom", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rusi-home": { + "provider": "RUSI", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 2, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T03:30:54.684Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T03:30:54.684Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-19T03:30:54.684Z", + "quarantineReason": "Health score degraded to 20 after repeated failures", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rusi-publications": { + "provider": "RUSI (Royal United Services Institute) a Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rusi-terrorism-conflict": { + "provider": "RUSI - Terrorism and Conflict", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T03:29:13.488Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 11, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T12:14:24.733Z", + "lastEmptyAt": "2026-04-24T03:29:13.488Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T11:15:29.208Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T12:14:24.733Z" + } + ], + "cooldownUntil": "2026-04-24T15:29:13.488Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T21:04:21.166Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T15:29:13.488Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "skwawkbox": { + "provider": "Skwawkbox", + "lane": "context", + "kind": "playwright_html", + "lastCheckedAt": "2026-04-16T22:57:09.120Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 3, + "consecutiveFailures": 3, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T22:57:09.120Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T22:57:09.120Z" + } + ], + "cooldownUntil": "2026-04-24T09:24:00.000Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 32, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:24:00.000Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "sky-news-uk-rss": { + "provider": "Sky News UK a Top Stories (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 35, + "emptyRuns": 38, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T20:17:25.806Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 64, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T20:17:25.806Z" + }, + "the-sun-all": { + "provider": "The Sun", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-sun-all-english": { + "provider": "The Sun", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-sun-homepage": { + "provider": "The Sun", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-sun-news-english": { + "provider": "The Sun", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "west-yorkshire-police-coroner-appeals-rss": { + "provider": "West Yorkshire Police - Coroner Appeals Feed", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 58, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-21T11:46:02.615Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "wiltshire-999s": { + "provider": "Wiltshire 999s", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "belfast-live": { + "provider": "Belfast Live", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 6, + "emptyRuns": 22, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 20, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T05:46:58.069Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 40, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "birmingham-mail": { + "provider": "Birmingham Mail", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "breaking-news-today": { + "provider": "Breaking News Today", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cambridge-news": { + "provider": "Cambridge News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T22:53:56.180Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 25, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-23T22:53:56.180Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "cooldownUntil": "2026-04-24T10:53:56.180Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-20T17:16:47.386Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T10:53:56.180Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "channel-4-news": { + "provider": "Channel 4 News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 12, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-19T17:13:24.435Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-20T11:00:44.891Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-20T23:15:54.554Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T00:08:15.005Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T03:57:52.244Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T08:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 10, + "quarantined": true, + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T08:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "consett-magazine": { + "provider": "Consett Magazine", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "daily-echo": { + "provider": "Daily Echo", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "daily-express": { + "provider": "Daily Express", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "daily-mail-online": { + "provider": "Daily Mail Online - Popular Stories", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 20, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 17, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T23:55:39.351Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T23:55:39.351Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "daily-mirror": { + "provider": "Daily Mirror", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "daily-politics": { + "provider": "Daily Politics", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-23T22:53:56.180Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 10, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T08:39:19.161Z", + "lastEmptyAt": "2026-04-23T22:53:56.180Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T07:21:41.099Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T08:39:19.161Z" + } + ], + "cooldownUntil": "2026-04-24T10:53:56.180Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T10:53:56.180Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "deadline-news": { + "provider": "Deadline News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T03:29:13.488Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 25, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-24T03:29:13.488Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 500", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "cooldownUntil": "2026-04-24T15:29:13.488Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-20T17:16:47.386Z", + "quarantineReason": "Health score degraded to 20 after repeated failures", + "nextFetchAt": "2026-04-24T15:29:13.488Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "evening-standard": { + "provider": "Evening Standard", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 3, + "emptyRuns": 25, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 20, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T05:46:58.069Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 35, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "glasgow-times": { + "provider": "Glasgow Times", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "grimsby-telegraph": { + "provider": "Grimsby Telegraph", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "herald-scotland-news": { + "provider": "Herald Scotland - News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "huffpost-uk": { + "provider": "HuffPost UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "larne-times": { + "provider": "Larne Times", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "manchester-evening-news": { + "provider": "Manchester Evening News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "metro": { + "provider": "BBC News - UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "news-uk": { + "provider": "News UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "pinknews": { + "provider": "PinkNews", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 10, + "failedRuns": 5, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T13:19:06.686Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T13:19:06.686Z" + } + ], + "cooldownUntil": "2026-04-24T20:17:25.806Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T20:17:25.806Z" + }, + "politics-co-uk": { + "provider": "Politics.co.uk", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "positive-news": { + "provider": "Positive News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "scottish-field": { + "provider": "Scottish Field", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "surgezirc-uk": { + "provider": "SurgeZirc UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T11:47:27.254Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 15, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T11:47:27.254Z", + "lastEmptyAt": "2026-04-23T08:09:12.931Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T14:11:10.963Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T11:47:27.254Z" + } + ], + "cooldownUntil": "2026-04-25T11:47:27.254Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T08:04:04.612Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T11:47:27.254Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-argus-news": { + "provider": "The Argus", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-bolton-news": { + "provider": "The Bolton News - News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "church-of-england-newspaper": { + "provider": "Church of England Newspaper", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 26, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 16, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-17T22:12:37.099Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-daily-mash": { + "provider": "The Daily Mash", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T22:53:56.180Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 10, + "failedRuns": 5, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T13:19:06.686Z", + "lastEmptyAt": "2026-04-23T22:53:56.180Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T13:19:06.686Z" + } + ], + "cooldownUntil": "2026-04-24T10:53:56.180Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T10:53:56.180Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "daily-record": { + "provider": "Daily Record", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "guardian-uk-top-stories": { + "provider": "The Guardian - UK Top Stories", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 12, + "failedRuns": 3, + "consecutiveFailures": 3, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-18T11:15:29.208Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T23:43:16.267Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-20T06:30:13.977Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "independent-top-stories": { + "provider": "The Independent - Top Stories", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T20:18:46.625Z", + "lastBuiltCount": 0, + "successfulRuns": 4, + "emptyRuns": 39, + "failedRuns": 2, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 10, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-19T16:03:49.134Z", + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-23T20:18:46.625Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "cooldownUntil": "2026-04-24T08:18:46.625Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T08:18:46.625Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "northern-echo-news": { + "provider": "The Northern Echo - News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-poke": { + "provider": "The Poke", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "scarborough-news": { + "provider": "The Scarborough News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-scotsman-news": { + "provider": "The Scotsman - News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-scottish-sun": { + "provider": "The Scottish Sun", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-sun": { + "provider": "The Sun", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-week-uk": { + "provider": "The Week UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 11, + "emptyRuns": 14, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T11:07:28.674Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-20T08:39:19.161Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T08:32:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 13, + "quarantined": true, + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T08:32:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-york-press-news": { + "provider": "The York Press - News", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "wales-online": { + "provider": "WalesOnline", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "a-lady-in-london": { + "provider": "A Lady in London", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T03:29:13.488Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 23, + "failedRuns": 3, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T03:29:13.488Z", + "lastEmptyAt": "2026-04-23T22:53:56.180Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-24T03:29:13.488Z" + } + ], + "cooldownUntil": "2026-04-26T03:29:13.488Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T03:29:13.488Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "a-luxury-travel-blog": { + "provider": "A Luxury Travel Blog", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "age-uk-discover": { + "provider": "Age UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "alan-malcher": { + "provider": "Alan Malcher", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "arcticdry": { + "provider": "ArcticDry", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 26, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 18, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-17T08:04:04.612Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T08:04:04.612Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "britishbeautyblogger": { + "provider": "British Beauty Blogger", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "buy-firewood-direct": { + "provider": "Buy Firewood Direct", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "carly-rowena": { + "provider": "Carly Rowena", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cherished-holiday-homes": { + "provider": "Cherished Holiday Homes", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "chique-home-living": { + "provider": "Chique Home Living", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "clubwise-blog": { + "provider": "ClubWise Blog", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "disneyrollergirl": { + "provider": "Disneyrollergirl", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "elluminet-press": { + "provider": "9to5Mac", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Health score degraded to 20 after repeated failures", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "england-naturally": { + "provider": "England, Naturally", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 18, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-24T20:52:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 11, + "quarantined": true, + "quarantinedAt": "2026-04-23T03:28:47.210Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T20:52:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "evening-shire": { + "provider": "Evening Shire", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T20:18:46.625Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 23, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastEmptyAt": "2026-04-23T20:18:46.625Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T07:21:41.099Z" + } + ], + "cooldownUntil": "2026-04-24T08:18:46.625Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T08:18:46.625Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "everything-zany": { + "provider": "Everything Zany", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 3, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T14:03:06.243Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "faded-spring": { + "provider": "Emily Underworld", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "fmcg-gurus": { + "provider": "FMCG Gurus", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 24, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 9, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T17:16:47.386Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T17:16:47.386Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-20T17:16:47.386Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-24T12:16:25.806Z" + }, + "foreign-office-blogs": { + "provider": "Foreign Office Blogs", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "fresh-design-blog": { + "provider": "Fresh Design Blog", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ian-neate-blog": { + "provider": "9to5Mac", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "jollydeck": { + "provider": "JollyDeck", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "lifestylelinked": { + "provider": "LifeStyleLinked", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "london-review-of-books": { + "provider": "London Review of Books", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "love-my-dress": { + "provider": "Love My Dress", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 18, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 520", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 11, + "quarantined": true, + "quarantinedAt": "2026-04-22T14:59:55.048Z", + "quarantineReason": "Health score degraded to 14 after repeated failures", + "nextFetchAt": "2026-04-24T10:21:25.806Z" + }, + "manic-mum-life": { + "provider": "Manic Mum Life", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 3, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T14:03:06.243Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "marie-claire-uk": { + "provider": "Marie Claire UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "office-breaks": { + "provider": "Office Breaks", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "on-the-think-of": { + "provider": "On The Think Of", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "quadrant2design-exhibiting-guides": { + "provider": "Quadrant2Design Exhibiting Guides", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T23:57:53.617Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 12, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastEmptyAt": "2026-04-23T23:57:53.617Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T07:21:41.099Z" + } + ], + "cooldownUntil": "2026-04-24T11:57:53.617Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T11:57:53.617Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "really-ree": { + "provider": "Really Ree", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T18:02:43.923Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 23, + "failedRuns": 3, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T18:02:43.923Z", + "lastEmptyAt": "2026-04-23T14:03:06.243Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 401", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-23T18:02:43.923Z" + } + ], + "cooldownUntil": "2026-04-25T18:02:43.923Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T18:02:43.923Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rocknroll-bride": { + "provider": "Rock n Roll Bride", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "semibold": { + "provider": "Semibold", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 25, + "failedRuns": 3, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 13, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-18T07:21:41.099Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T07:21:41.099Z" + } + ], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "silly-old-sod": { + "provider": "Silly Old Sod", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 25, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 11, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T04:05:33.139Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-20T04:05:33.139Z" + } + ], + "cooldownUntil": "2026-04-24T20:17:25.806Z", + "autoSkipReason": "empty-cooldown", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-20T04:05:33.139Z", + "quarantineReason": "Persistent timeouts — endpoint may be overloaded or unreachable", + "nextFetchAt": "2026-04-24T20:17:25.806Z" + }, + "silverspoon-london": { + "provider": "SilverSpoon London", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "sks-business-services": { + "provider": "SKS Business Services", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "hnd-assignment-help-uk-medium": { + "provider": "Stories by HND Assignment Help UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "streetspace": { + "provider": "Streetspace", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T13:19:06.686Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "tenura": { + "provider": "Tenura", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "thank-you-for-the-days": { + "provider": "Thank you for the days", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 14, + "failedRuns": 4, + "consecutiveFailures": 2, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-19T14:11:10.963Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-17T08:04:04.612Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 401", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-curry-guy": { + "provider": "The Curry Guy", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "real-talk-uk": { + "provider": "The Real Talk UK", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "the-stratfordian": { + "provider": "The Stratfordian", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "training-express": { + "provider": "Training Express", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-constitutional-law-association": { + "provider": "UK Constitutional Law Association", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-fundraising-blog": { + "provider": "UK Fundraising", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-human-rights-blog": { + "provider": "UK Human Rights Blog", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "vershd": { + "provider": "Vershd", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "vuelio-uk": { + "provider": "Vuelio", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "avon-and-somerset-police-news-html": { + "provider": "Avon and Somerset Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "avon-somerset-police-news": { + "provider": "Avon & Somerset Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "bedfordshire-police-news": { + "provider": "Bedfordshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "bedfordshire-police-news-search": { + "provider": "Bedfordshire Police - News Search", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "british-transport-police-news": { + "provider": "British Transport Police Authority - News Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "btp-british-transport-police-news-html": { + "provider": "British Transport Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cambridgeshire-police-news-search": { + "provider": "Cambridgeshire Police - News Search", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cheshire-police-news": { + "provider": "Cheshire Constabulary - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cleveland-police-news": { + "provider": "Cleveland Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cps-news-centre": { + "provider": "Crown Prosecution Service a News Centre", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ct-policing-north-west": { + "provider": "Counter Terrorism Policing North West", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ct-policing-uk-latest-news": { + "provider": "Counter Terrorism Policing UK a Latest News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ct-policing-uk-rss-feed": { + "provider": "Counter Terrorism Policing UK - Latest News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T14:03:06.243Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T14:03:06.243Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-21T11:46:02.615Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-23T14:03:06.243Z" + } + ], + "cooldownUntil": "2026-04-25T14:03:06.243Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T14:03:06.243Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cumbria-police-news": { + "provider": "Cumbria Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "cumbria-police-newsroom": { + "provider": "Cumbria Police - Newsroom", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "derbyshire-police-news": { + "provider": "Derbyshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "devon-and-cornwall-police-newsroom": { + "provider": "Devon and Cornwall Police - Newsroom", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "devon-cornwall-police-news": { + "provider": "Devon and Cornwall Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "dorset-police-news": { + "provider": "Dorset Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "dorset-police-newsroom": { + "provider": "Dorset Police - Newsroom", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "durham-constabulary-news": { + "provider": "Durham Constabulary a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "durham-police-durham-news": { + "provider": "Durham Police - Durham News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "dyfed-powys-police-news": { + "provider": "Dyfed-Powys Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "essex-police-news-html": { + "provider": "Essex Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gloucestershire-police-news": { + "provider": "Gloucestershire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gmp-news": { + "provider": "Greater Manchester Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "greater-manchester-police-news": { + "provider": "Greater Manchester Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gwent-police-news": { + "provider": "Gwent Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "hampshire-police-news": { + "provider": "Hampshire & Isle of Wight Constabulary a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "hertfordshire-police-news": { + "provider": "Hertfordshire Constabulary a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "humberside-police-news-search": { + "provider": "Humberside Police - News Search", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "kent-police-news-html": { + "provider": "Kent Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "lancashire-constabulary-news": { + "provider": "Lancashire Constabulary a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "leicestershire-police-news": { + "provider": "National Crime Agency - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "lincolnshire-police-news": { + "provider": "Lincolnshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "merseyside-police-news": { + "provider": "Merseyside Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "merseyside-police-news-html": { + "provider": "Merseyside Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "norfolk-constabulary-news": { + "provider": "Norfolk Constabulary - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "north-wales-police-news": { + "provider": "North Wales Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "north-yorkshire-police-news-html": { + "provider": "North Yorkshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "northamptonshire-police-news-html": { + "provider": "Northamptonshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "northumbria-police-news": { + "provider": "North East Bylines", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "northumbria-police-northumbria-news": { + "provider": "Northumbria Police - Northumbria News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nottinghamshire-police-news": { + "provider": "Nottinghamshire Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nottinghamshire-police-nottinghamshire-news": { + "provider": "Nottinghamshire Police - Nottinghamshire News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "police-scotland-news": { + "provider": "Police Scotland news", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 30, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T19:32:35.264Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T00:05:41.686Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T00:05:41.686Z", + "quarantineReason": "Health score degraded to 23 after repeated failures", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "psni-latest-news": { + "provider": "Police Service of Northern Ireland - Latest News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "psni-news": { + "provider": "Police Service of Northern Ireland a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "south-wales-police-news": { + "provider": "South Wales Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "south-yorkshire-police-news": { + "provider": "South Yorkshire Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "staffordshire-police-news": { + "provider": "Staffordshire Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "staffordshire-police-staffordshire-news": { + "provider": "Staffordshire Police - Staffordshire News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "suffolk-constabulary-news": { + "provider": "Suffolk Constabulary - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "surrey-police-news": { + "provider": "Surrey Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "sussex-police-news": { + "provider": "Sussex Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "thames-valley-police-news": { + "provider": "Thames Valley Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "thames-valley-police-news-html": { + "provider": "Thames Valley Police - Thames Valley News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "warwickshire-police-news": { + "provider": "Warwickshire Connected - Latest Alerts", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 2, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "west-mercia-police-news-html": { + "provider": "West Mercia Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "west-midlands-police-news": { + "provider": "West Midlands Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "west-yorkshire-police-all-rss": { + "provider": "West Yorkshire Police - All Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "west-yorkshire-police-appeals-rss": { + "provider": "West Yorkshire Police - Appeals Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "west-yorkshire-police-missing-rss": { + "provider": "West Yorkshire Police - Missing Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "west-yorkshire-police-news": { + "provider": "West Yorkshire Police a News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-21T11:46:02.615Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "west-yorkshire-police-news-appeals": { + "provider": "West Yorkshire Police - News Appeals", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "west-yorkshire-police-news-rss": { + "provider": "West Yorkshire Police - News Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "west-yorkshire-police-releases-rss": { + "provider": "West Yorkshire Police - Releases Feed", + "lane": "incidents", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 81, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 81, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "wiltshire-police-news": { + "provider": "Wiltshire Police - News", + "lane": "incidents", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "attorney-generals-office-html": { + "provider": "Attorney General's Office", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "cabinet-office-html": { + "provider": "Cabinet Office", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "cps-homepage": { + "provider": "Crown Prosecution Service", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "crown-office-news": { + "provider": "Crown Office and Procurator Fiscal Service - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "echr-uk-grand-chamber-rss": { + "provider": "European Court of Human Rights - UK Grand Chamber RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "extremism-commission-blog": { + "provider": "Commission for Countering Extremism - Blog", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "fcdo-html": { + "provider": "Foreign, Commonwealth & Development Office", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 13, + "emptyRuns": 76, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-scot-access-to-justice-latest": { + "provider": "Scottish Government - Access to Justice Latest", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-cabinet-office-atom": { + "provider": "Cabinet Office a GOV.UK Atom Feed", + "lane": "oversight", + "kind": "atom", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-hmcts": { + "provider": "HMCTS a Courts and Tribunals Announcements", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-hmic": { + "provider": "HM Inspectorate of Constabulary a GOV.UK", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gov-uk-home-office-atom": { + "provider": "UK Home Office a Atom Feed", + "lane": "oversight", + "kind": "atom", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-ipco": { + "provider": "Investigatory Powers Commissioner's Office a GOV.UK", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-mod-atom": { + "provider": "Ministry of Defence a GOV.UK Atom Feed", + "lane": "oversight", + "kind": "atom", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-moj-atom": { + "provider": "Ministry of Justice a GOV.UK Atom Feed", + "lane": "oversight", + "kind": "atom", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-news-and-communications-atom": { + "provider": "GOV.UK - News and Communications Atom", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 17, + "emptyRuns": 74, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 30, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-20T21:17:14.299Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-parliament-jcnss": { + "provider": "UK Parliament a Joint Committee on National Security Strategy", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "hmiprisons-news": { + "provider": "HM Inspectorate of Prisons - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "hmiprobation-news": { + "provider": "HM Inspectorate of Probation - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "home-office-media-blog": { + "provider": "Home Office Media Blog", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "independent-reviewer-terrorism-legislation": { + "provider": "Independent Reviewer of Terrorism Legislation a Reports", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "independent-reviewer-terrorism-legislation-html": { + "provider": "Independent Reviewer of Terrorism Legislation", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "joint-committee-human-rights-html": { + "provider": "Joint Committee on Human Rights", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T19:31:23.009Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 15, + "failedRuns": 5, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T19:31:23.009Z", + "lastEmptyAt": "2026-04-23T18:02:43.923Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + }, + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T19:31:23.009Z" + } + ], + "cooldownUntil": "2026-04-25T19:31:23.009Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-25T19:31:23.009Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "judiciary-rss-feeds-page": { + "provider": "Judiciary UK - RSS Feeds", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "judiciary-uk-announcements-feed": { + "provider": "Judiciary UK - Announcements Feed", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "judiciary-uk-judgments-feed": { + "provider": "Judiciary UK - Judgments Feed", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "judiciary-uk-news": { + "provider": "Judiciary of England and Wales a News", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-22T16:17:11.443Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 34, + "failedRuns": 3, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T16:17:11.443Z", + "lastEmptyAt": "2026-04-22T14:59:55.048Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "Blocked by blocked access page", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-16T22:57:09.120Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-19T11:44:44.316Z" + }, + { + "category": "blocked-or-auth", + "message": "Blocked by blocked access page", + "at": "2026-04-22T16:17:11.443Z" + } + ], + "cooldownUntil": "2026-04-24T16:17:11.443Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T16:17:11.443Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "judiciary-uk-publications-feed": { + "provider": "Judiciary UK - Publications Feed", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "lords-in-focus-rss": { + "provider": "Hansard Society - Despatch Box", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "lords-library-notes-rss": { + "provider": "Hansard Society - Despatch Box", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ministry-of-defence-html": { + "provider": "Ministry of Defence", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 75, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "ons-html": { + "provider": "Office for National Statistics", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "parliament-all-bills-rss": { + "provider": "Parliament - All Bills RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "parliament-private-bills-rss": { + "provider": "Parliament - Private Bills RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "parliament-public-bills-rss": { + "provider": "Parliament - Public Bills RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "police-ombudsman-current-investigations": { + "provider": "Police Ombudsman - Current Investigations", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "police-uk-crime-categories-2024-01": { + "provider": "Police.uk - Crime Categories (2024-01)", + "lane": "oversight", + "kind": "json", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "police-uk-crimes-street-dates": { + "provider": "Police.uk - Street Crime Dataset Dates", + "lane": "oversight", + "kind": "json", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "police-uk-outcomes-at-location-1609590": { + "provider": "Police Data UK - Outcomes At Location API Docs", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "police-uk-outcomes-for-crime-e11dade0": { + "provider": "Police.uk - Outcomes For Crime e11dade0", + "lane": "oversight", + "kind": "json", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-fai-determinations-rss": { + "provider": "Scottish Courts - Fatal Accident Inquiry Determinations RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-fai-hearings-rss": { + "provider": "Scottish Courts - Fatal Accident Inquiry Hearings RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-high-court-justiciary-judgments-rss": { + "provider": "Scottish Courts - High Court of Justiciary Judgments RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-high-court-practice-notes-rss": { + "provider": "Scottish Courts - High Court of Justiciary Practice Notes RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-judgments-rss": { + "provider": "Scottish Courts - Judgments RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-news-articles-rss": { + "provider": "Scottish Courts - News Articles RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-publications-rss": { + "provider": "Scottish Courts - Publications RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scotcourts-rss-feeds-page": { + "provider": "Scottish Courts and Tribunals - RSS Feeds", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T03:28:47.210Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 65, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 1, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T03:28:47.210Z", + "lastEmptyAt": "2026-04-22T23:56:26.571Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T03:28:47.210Z" + } + ], + "cooldownUntil": "2026-04-25T03:28:47.210Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T03:28:47.210Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "scotcourts-sheriff-criminal-practice-notes-rss": { + "provider": "Scottish Courts - Sheriff Court Criminal Practice Notes RSS", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "scottish-government-justice-news": { + "provider": "Scottish Government - Justice and Safety", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "serious-fraud-office-news": { + "provider": "Serious Fraud Office a News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 63, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T04:05:33.139Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-20T04:05:33.139Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-home-office": { + "provider": "UK Home Office a Announcements and Publications", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 1, + "successfulRuns": 101, + "emptyRuns": 4, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-19T18:05:04.781Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-iopc-news": { + "provider": "Independent Office for Police Conduct a News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-ncsc-news": { + "provider": "National Cyber Security Centre (UK) a News", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 5, + "successfulRuns": 105, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-ncsc-threat-reports": { + "provider": "National Cyber Security Centre (UK) a Threat Reports", + "lane": "oversight", + "kind": "rss", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 1, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-16T16:57:11.406Z", + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T21:08:30.446Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-parliament-business-news": { + "provider": "UK Parliament - Business News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-parliament-defence-committee": { + "provider": "UK Parliament a Defence Select Committee", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 68, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": "2026-04-23T08:09:12.931Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-parliament-foreign-affairs-committee": { + "provider": "UK Parliament a Foreign Affairs Select Committee", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-parliament-home-affairs-committee": { + "provider": "UK Parliament a Home Affairs Committee (News)", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 79, + "failedRuns": 1, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": "timeout", + "lastErrorMessage": "This operation was aborted", + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-24T08:17:25.806Z" + } + ], + "cooldownUntil": "2026-04-26T08:17:25.806Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T08:17:25.806Z" + }, + "uk-parliament-isc": { + "provider": "UK Parliament a Intelligence and Security Committee (Reports & News)", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 2, + "failedRuns": 6, + "consecutiveFailures": 4, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 4, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T21:04:21.166Z", + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T22:01:43.175Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T05:49:08.723Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-parliament-justice-committee": { + "provider": "UK Parliament a Justice Select Committee", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "act-campaign": { + "provider": "ACT Awareness Campaign", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "cheshire-police-alert": { + "provider": "Cheshire Police Alert", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "ct-policing-prevent-programme": { + "provider": "Counter Terrorism Policing - Prevent", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ct-policing-what-you-can-do": { + "provider": "Counter Terrorism Policing - What You Can Do", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "dc-police-community-messaging": { + "provider": "Dorset and Cornwall Police - Community Messaging", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "devon-cornwall-alerts": { + "provider": "Devon and Cornwall Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gnet-research": { + "provider": "Global Network on Extremism & Technology (GNET) a Main Feed", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 95, + "emptyRuns": 6, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 1, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T06:01:25.327Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 97, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T12:00:25.806Z" + }, + "gov-uk-contest-strategy": { + "provider": "GOV.UK a CONTEST Counter-Terrorism Strategy", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-counter-extremism-commissioner": { + "provider": "Counter Extremism Commissioner a GOV.UK", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 79, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 77, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T19:01:30.233Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T19:01:30.233Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-prevent-strategy": { + "provider": "UK Home Office - Prevent duty guidance", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-report-terrorism": { + "provider": "GOV.UK - Report Terrorism", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gov-uk-terrorism-national-emergency": { + "provider": "GOV.UK - Terrorism National Emergency", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "icsr-kcl": { + "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "met-office-seasonal-advice": { + "provider": "Met Office - Seasonal Advice", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "mi5-terrorism-threat-levels": { + "provider": "MI5 - Terrorism Threat Levels", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "mi5-uk-threat-level": { + "provider": "MI5 (Security Service) a UK Threat Level", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "my-community-alert": { + "provider": "My Community Alert", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-23T11:47:27.254Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 45, + "failedRuns": 2, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T11:47:27.254Z", + "lastEmptyAt": "2026-04-23T10:13:21.253Z", + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-18T19:28:57.337Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", + "at": "2026-04-23T11:47:27.254Z" + } + ], + "cooldownUntil": "2026-04-25T11:47:27.254Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-25T11:47:27.254Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "north-wales-community-alert": { + "provider": "North Wales Community Alert", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T03:29:13.488Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 41, + "failedRuns": 4, + "consecutiveFailures": 1, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-24T03:29:13.488Z", + "lastEmptyAt": "2026-04-23T23:57:53.617Z", + "lastErrorCategory": "http-status-error", + "lastErrorMessage": "HTTP 429", + "recentErrors": [ + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-17T05:46:58.069Z" + }, + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-20T23:15:54.554Z" + }, + { + "category": "http-status-error", + "message": "HTTP 429", + "at": "2026-04-24T03:29:13.488Z" + } + ], + "cooldownUntil": "2026-04-26T03:29:13.488Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-26T03:29:13.488Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "northamptonshire-talking": { + "provider": "Northamptonshire Talking", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "npsa-blog": { + "provider": "NPSA - Blog", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "npsa-blog-news": { + "provider": "NPSA - Blog News", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "npsa-national-protective-security-authority": { + "provider": "NPSA - Activity on GOV.UK", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "protectuk": { + "provider": "ProtectUK (NPSA) a Protective Security Guidance", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "south-yorkshire-police-alerts": { + "provider": "South Yorkshire Police Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "stay-in-the-know-home": { + "provider": "Stay In The Know - Community Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "stay-in-the-know-latest-alerts": { + "provider": "Stay In The Know - Latest Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 58, + "failedRuns": 2, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-ncsc-all-rss": { + "provider": "UK NCSC - All Updates RSS", + "lane": "prevention", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 14, + "emptyRuns": 75, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-ncsc-homepage": { + "provider": "UK NCSC - Homepage", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "uk-prevent-duty-guidance": { + "provider": "GOV.UK a Prevent Duty Guidance (Collection)", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "west-midlands-community-alerts": { + "provider": "WMNow - Community Alerts", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "west-yorkshire-community-alert": { + "provider": "West Yorkshire Community Alert", + "lane": "prevention", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 59, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-19T17:13:24.435Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T17:13:24.435Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "gov-uk-proscribed-terrorist-orgs": { + "provider": "GOV.UK a Proscribed Terrorist Organisations", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "hm-treasury-html": { + "provider": "HM Treasury", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "ofsi-blog-home": { + "provider": "OFSI - Blog", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "otsi-blog-home": { + "provider": "OTSI - Blog", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 1, + "successfulRuns": 101, + "emptyRuns": 4, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-19T18:05:04.781Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-ofsi-blog": { + "provider": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "lane": "sanctions", + "kind": "rss", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 2, + "successfulRuns": 105, + "emptyRuns": 0, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", + "lastFailureAt": null, + "lastEmptyAt": null, + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 100, + "quarantined": false, + "quarantinedAt": null, + "quarantineReason": null, + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "uk-sanctions-list": { + "provider": "UK Sanctions List (FCDO) a Consolidated List (XML Service)", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "ctc-sentinel": { + "provider": "Combating Terrorism Center at West Point - CTC Sentinel", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "dhs-press-releases": { + "provider": "US Department of Homeland Security - News", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "dni-press-releases": { + "provider": "Office of the Director of National Intelligence - Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "doj-nsd-press-releases": { + "provider": "U.S. Department of Justice - National Security Division Press Releases", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 22, + "failedRuns": 4, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 22, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-20T06:30:13.977Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T15:11:26.228Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-18T05:49:08.723Z" + }, + { + "category": "not-found-404", + "message": "HTTP 404", + "at": "2026-04-20T06:30:13.977Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-16T16:57:11.406Z", + "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "fbi-national-press-releases": { + "provider": "FBI - National Press Releases (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "fbi-stories": { + "provider": "FBI - Top Stories (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "blocked-or-auth", + "lastErrorMessage": "HTTP 403", + "recentErrors": [ + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "blocked-or-auth", + "message": "HTTP 403", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "fbi-top-stories": { + "provider": "FBI - Top Stories (RSS)", + "lane": "context", + "kind": "rss", + "lastCheckedAt": "2026-04-23T10:13:21.253Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 7, + "consecutiveFailures": 7, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-23T10:13:21.253Z", + "lastEmptyAt": null, + "lastErrorCategory": "brittle-selectors-or-js-rendering", + "lastErrorMessage": "No items parsed from source payload", + "recentErrors": [ + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-19T10:46:47.709Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-21T08:24:19.478Z" + }, + { + "category": "brittle-selectors-or-js-rendering", + "message": "No items parsed from source payload", + "at": "2026-04-23T10:13:21.253Z" + } + ], + "cooldownUntil": "2026-04-25T10:13:21.253Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", + "nextFetchAt": "2026-04-25T10:13:21.253Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "gw-program-extremism": { + "provider": "George Washington University - Program on Extremism", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T06:01:25.327Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 21, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 21, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T06:01:25.327Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": "2026-04-24T18:01:25.327Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 17, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T18:01:25.327Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "nsa-cybersecurity-news": { + "provider": "NSA - Cybersecurity Advisories & Guidance", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "rand-terrorism-topic": { + "provider": "RAND - Terrorism Topic Updates", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 5, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "rewards-for-justice": { + "provider": "U.S. Department of State - Rewards for Justice", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "start-baad-database": { + "provider": "National Consortium for the Study of Terrorism (START) - Big Allied and Dangerous (BAAD) Database", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "start-center-publications": { + "provider": "START Center (UMD) - News & Publications", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 1, + "failedRuns": 6, + "consecutiveFailures": 5, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": "2026-04-16T19:01:30.233Z", + "lastErrorCategory": "network-failure", + "lastErrorMessage": "fetch failed", + "recentErrors": [ + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:04:21.166Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-16T21:58:32.608Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-18T03:42:22.439Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-19T18:05:04.781Z" + }, + { + "category": "network-failure", + "message": "fetch failed", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-18T03:42:22.439Z", + "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "state-dept-terrorism": { + "provider": "US State Department - Bureau of Counterterrorism", + "lane": "context", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "cisa-cybersecurity-advisories": { + "provider": "CISA - Cybersecurity Alerts & Advisories", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 13, + "emptyRuns": 76, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 75, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "us-house-homeland-security": { + "provider": "US House Committee on Homeland Security - News", + "lane": "oversight", + "kind": "html", + "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 0, + "failedRuns": 6, + "consecutiveFailures": 6, + "consecutiveEmptyRuns": 0, + "consecutiveBlockedFailures": 6, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-22T14:59:55.048Z", + "lastEmptyAt": null, + "lastErrorCategory": "anti-bot-protection", + "lastErrorMessage": "Blocked by anti-bot protection", + "recentErrors": [ + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T16:57:11.406Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-16T19:01:30.233Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-17T22:12:37.099Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-19T19:32:35.264Z" + }, + { + "category": "anti-bot-protection", + "message": "Blocked by anti-bot protection", + "at": "2026-04-22T14:59:55.048Z" + } + ], + "cooldownUntil": "2026-04-24T14:59:55.048Z", + "autoSkipReason": "health-deprioritised", + "healthScore": 0, + "quarantined": true, + "quarantinedAt": "2026-04-17T22:12:37.099Z", + "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", + "nextFetchAt": "2026-04-24T14:59:55.048Z", + "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + "us-treasury-ofac-press-releases": { + "provider": "U.S. Treasury (OFAC) - Press Releases", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 79, + "failedRuns": 1, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 79, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": "2026-04-16T15:11:26.228Z", + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [ + { + "category": "timeout", + "message": "This operation was aborted", + "at": "2026-04-16T15:11:26.228Z" + } + ], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" + }, + "us-treasury-ofac-recent-actions": { + "provider": "U.S. Treasury (OFAC) - Recent Actions", + "lane": "sanctions", + "kind": "html", + "lastCheckedAt": "2026-04-24T08:17:25.806Z", + "lastBuiltCount": 0, + "successfulRuns": 0, + "emptyRuns": 80, + "failedRuns": 0, + "consecutiveFailures": 0, + "consecutiveEmptyRuns": 80, + "consecutiveBlockedFailures": 0, + "consecutiveDeadUrlFailures": 0, + "lastSuccessfulAt": null, + "lastFailureAt": null, + "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastErrorCategory": null, + "lastErrorMessage": null, + "recentErrors": [], + "cooldownUntil": null, + "autoSkipReason": null, + "healthScore": 0, + "quarantined": true, + "quarantinedAt": null, + "quarantineReason": "Low health score – needs review", + "nextFetchAt": "2026-04-24T09:17:25.806Z" } } } diff --git a/source-quarantine.html b/source-quarantine.html index 67bcdf68..df1bcf8c 100644 --- a/source-quarantine.html +++ b/source-quarantine.html @@ -269,13 +269,13 @@

Source Quarantine Review

- Generated: 2026-04-24T15:22:20.804Z - Low-health sources: 0 + Generated: 2026-04-24T08:17:25.806Z + Low-health sources: 529 Pending suggestions: 0 SLA: deprioritised, auto-recheck 24h+ - New this week: 0 - Avg health score: 0/100 - Avg time in quarantine: 0h + New this week: 231 + Avg health score: 3/100 + Avg time in quarantine: 153h Re-quarantine rate: 0%
@@ -455,7 +455,7 @@

Feed Audit

? 'Data mode: live API (restore enabled)' : 'Data mode: live read-only (restore unavailable)'; meta.innerHTML = [ - 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T15:22:20.804Z') + '', + 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T08:17:25.806Z') + '', 'Low-health sources: ' + escapeHtml(currentEntries.length) + '', 'Pending suggestions: ' + escapeHtml(currentSuggestions.length) + '', 'SLA: deprioritised, auto-recheck 24h+', From 86c60b9f555eaaf9357c4be14a94df4a5ff3b70c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:44:17 +0000 Subject: [PATCH 06/25] Plan source endpoint restorations and quarantine cleanup Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/a6ef3658-00ee-4153-bbb0-89b02f29c930 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2252800 -> 2256896 bytes data/quarantined-sources.json | 18772 +--------------- data/source-remediation-sweep.json | 123 +- data/top-20-source-remediation.json | 58 +- live-alerts.json | 29663 +++----------------------- source-quarantine.html | 12 +- 6 files changed, 3227 insertions(+), 45401 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index b13185dfa065db2f8edab7231a8e72c2aa5bdc03..9b3788ff82c554e8078a788d8f0ff5c0e0dd41f7 100644 GIT binary patch delta 2955 zcmb7GZEO>D81LQn<;uEtqh;M%pf?njmUdj>CS)JRQ3Fpl8c1U66uZI}{axAQ5 zAezQK)?nDVO6um`o60Ia`}`D6b6aaC&0SW#87+FW7p8Ts1B)xBc&x$L(*rr9W~D{dBXG{lg!bn{81m96p}uc9uj;3 z>Cmr^kI?=>DSO9JV_VKbvb5uN>B=3)Kme~7=dQ;bSk~P z0Q<;vUH~EXrNhZYb0SUon*zabI+>1hnM|H#aw7{x?GVQw75ca=v1>R>71$J=BHEKY zCkVugbT8Z@%qt!vyJaa^l;g$#)Ae&MV|Gdh`!7{lVO%n%`eejM4Xn}}x zdHGgfH_h`L4*?D`^boO!rg(sthAK@=8Ae7}@<38=UOG!wsIp3L zN&e@nCC{hB;)EXj$dWkg1U!Ks>Eu?MzObZyRX+=+vg%`bm88T89bB#qf^vgcP(~8| z52y|n=UA?UQV98Uk2s+PFE9|LV_R+3j#XHf=AL@(%44y(|KOI-O&79StqsRdY0Uqc zt16!}c`7>AC5#FD6jZ4n_lmC;W)*C-48c%zFKIEohl!&nrNU3;DJm(s+VPuSks6gf z#iA!%bzMuFVnI*Hnk*HbnCqo$|Cuj(-gqXXIwT?#NSw|mtm%8cI96D0~is*vYk6x)`);vWS1`g?6~-{O-H+Jo8htH0{qN<#3Y*35DShM3V-skwp}Rq@Wo@%MFo8OW|-+ z&aEYMwM95YMAT>ym;@~?LbOQI8-8zj@OVb6LX5i#ISsL_AlM>jT9RZh*N)RuyM97r zwqm|i*x1YzO1aGTPH`_^IGCqQ5Cn<0k)+4F{Fit5H~-@8y2p6p_0Np?33;+NC diff --git a/data/quarantined-sources.json b/data/quarantined-sources.json index a6abc8f9..382b30ac 100644 --- a/data/quarantined-sources.json +++ b/data/quarantined-sources.json @@ -1,18772 +1,14 @@ { - "generatedAt": "2026-04-24T08:17:25.806Z", - "count": 529, + "generatedAt": "2026-04-24T15:44:02.370Z", + "count": 0, "metrics": { - "total": 529, - "newThisWeek": 231, - "avgTimeInQuarantineHours": 153, - "avgHealthScore": 3, + "total": 0, + "newThisWeek": 0, + "avgTimeInQuarantineHours": 0, + "avgHealthScore": 0, "reQuarantineRate": 0, "reQuarantined": 0, "restoredTotal": 0 }, - "sources": [ - { - "id": "euaa-news", - "provider": "EUAA (EU Agency for Asylum) - Press Releases", - "endpoint": "https://euaa.europa.eu/news-events/press-releases", - "kind": "html", - "lane": "border", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eulisa-news-events", - "provider": "eu-LISA - News and Events (RSS)", - "endpoint": "https://www.eulisa.europa.eu/news-and-events.rss", - "kind": "rss", - "lane": "border", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T08:17:25.806Z", - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T08:17:25.806Z", - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "europol-news-rss", - "provider": "Europol - Newsroom (RSS)", - "endpoint": "https://www.europol.europa.eu/cms/api/rss/news", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dutch-police-rss-index", - "provider": "Politie.nl - RSS", - "endpoint": "https://www.politie.nl/rss", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "mossos-news", - "provider": "Mossos d'Esquadra - News", - "endpoint": "https://mossos.gencat.cat/ca/actualitat/", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eppo-news-node-7", - "provider": "European Public Prosecutor's Office - News (RSS)", - "endpoint": "https://www.eppo.europa.eu/en/news.xml", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-commission-counter-terrorism-measures-2026", - "provider": "European Commission - Counter Terrorism Measures 2026", - "endpoint": "https://commission.europa.eu/news-and-media/news/commission-proposes-new-measures-prevent-and-counter-terrorism-2026-02-26_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-commission-home-affairs-topic", - "provider": "European Commission - Home Affairs", - "endpoint": "https://commission.europa.eu/topics/home-affairs_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-council-jha-register-rss", - "provider": "Council of the EU - Latest Documents RSS", - "endpoint": "https://www.consilium.europa.eu/en/register/rss/LD.xml", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-council-press-releases", - "provider": "Council of the European Union a Press Releases (RSS)", - "endpoint": "https://www.consilium.europa.eu/en/rss/pressreleases.ashx", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-council-press-releases-html", - "provider": "Council of the EU - Press Releases", - "endpoint": "https://www.consilium.europa.eu/en/press/press-releases/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-eppo-news", - "provider": "European Public Prosecutor's Office - News", - "endpoint": "https://www.eppo.europa.eu/en/news", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-home-affairs-news", - "provider": "European Commission a Home Affairs News", - "endpoint": "https://home-affairs.ec.europa.eu/news_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-olaf-news", - "provider": "OLAF (EU Anti-Fraud Office) a News", - "endpoint": "https://anti-fraud.ec.europa.eu/media-corner/news_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-security-union-strategy", - "provider": "European Commission a Security Union Strategy", - "endpoint": "https://home-affairs.ec.europa.eu/policies/internal-security_en", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "europarl-committee-libe", - "provider": "European Parliament - LIBE Press Releases", - "endpoint": "https://www.europarl.europa.eu/committees/en/libe/home/press-releases", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "europarl-committee-sede", - "provider": "European Parliament - SEDE Press Releases", - "endpoint": "https://www.europarl.europa.eu/committees/en/sede/home/press-releases", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "europarl-pressreleases-committees", - "provider": "European Parliament a Press Releases (Committees) (RSS)", - "endpoint": "https://www.europarl.europa.eu/rss/doc/press-releases-committees/en.xml", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "netherlands-police-news", - "provider": "Dutch National Police - News (EN)", - "endpoint": "https://www.politie.nl/en/news", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "echr-press-releases-rss", - "provider": "European Court of Human Rights - Press Releases RSS", - "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echrengpress&query=contentsitename%3AECHR+AND+doctype%3DPR&ranking. Model. Id=11111111-0000-0000-0000-000000000000&sort=kpdate+Descending&start=0", - "kind": "rss", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "french-justice-ministry-news", - "provider": "French Ministry of Justice - News", - "endpoint": "https://www.justice.gouv.fr/actualites", - "kind": "html", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dsn-at-english", - "provider": "DSN Austria - Aktuelles", - "endpoint": "https://www.dsn.gv.at/news.html", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "sapo-se-english", - "provider": "Swedish Security Service English news", - "endpoint": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/press-room/news.html", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "interpol-news-events", - "provider": "INTERPOL a News and Events", - "endpoint": "https://www.interpol.int/News-and-Events", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "osce-press-releases", - "provider": "OSCE a Press Releases", - "endpoint": "https://www.osce.org/press-releases", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "unoct-news", - "provider": "UN Office of Counter-Terrorism (UNOCT) - News", - "endpoint": "https://www.un.org/counterterrorism/news", - "kind": "html", - "lane": "oversight", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "bexley-council-news", - "provider": "Bexley Council a News", - "endpoint": "https://www.bexley.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "brent-council-news", - "provider": "Brent Council a News", - "endpoint": "https://www.brent.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "camden-council-news", - "provider": "Camden Council a News", - "endpoint": "https://news.camden.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "chelsea-westminster-news", - "provider": "Chelsea and Westminster Hospital NHS Foundation Trust a News", - "endpoint": "https://www.chelwest.nhs.uk/about-us/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "croydon-council-news", - "provider": "Croydon Council a News", - "endpoint": "https://news.croydon.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gosh-news", - "provider": "Great Ormond Street Hospital a News", - "endpoint": "https://www.gosh.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "guys-st-thomas-news", - "provider": "Guy's and St Thomas' NHS Foundation Trust a News", - "endpoint": "https://www.guysandstthomas.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hackney-council-news", - "provider": "Hackney Council a News", - "endpoint": "https://news.hackney.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "havering-council-news", - "provider": "Havering Council a News", - "endpoint": "https://www.havering.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hillingdon-council-news", - "provider": "Hillingdon Council a News", - "endpoint": "https://www.hillingdon.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hounslow-council-news", - "provider": "Hounslow Council a News", - "endpoint": "https://www.hounslow.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "islington-council-news", - "provider": "Islington Council a News", - "endpoint": "https://www.islington.media/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "kings-college-hospital-news", - "provider": "King's College Hospital NHS Foundation Trust a News", - "endpoint": "https://www.kch.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "lambeth-council-news", - "provider": "Lambeth Council a News", - "endpoint": "https://love.lambeth.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "lnwh-news", - "provider": "London North West University Healthcare NHS Trust a News", - "endpoint": "https://www.lnwh.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "london-gov-rss-80603", - "provider": "Greater London Authority a RSS Feed 80603", - "endpoint": "https://www.london.gov.uk/rss-feeds/80603", - "kind": "rss", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "london-gov-rss-80632", - "provider": "Greater London Authority a RSS Feed 80632", - "endpoint": "https://www.london.gov.uk/rss-feeds/80632", - "kind": "rss", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "met-police-the-met-tag", - "provider": "Metropolitan Police - The Met Tag", - "endpoint": "https://news.met.police.uk/news/tag/the-met", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "moorfields-news", - "provider": "Moorfields Eye Hospital NHS Foundation Trust a News", - "endpoint": "https://www.moorfields.nhs.uk/about-us/news-and-blogs/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "nelft-news", - "provider": "North East London NHS Foundation Trust a News", - "endpoint": "https://www.nelft.nhs.uk/news-events/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "newham-council-news", - "provider": "Newham Council a News", - "endpoint": "https://www.newham.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "nhs-london-nwl-news", - "provider": "NHS North West London a News", - "endpoint": "https://www.nwlondonicb.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "oxleas-news", - "provider": "Oxleas NHS Foundation Trust a News", - "endpoint": "https://oxleas.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "redbridge-council-news", - "provider": "Redbridge Council a News", - "endpoint": "https://www.redbridge.gov.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "st-georges-news", - "provider": "St George's University Hospitals NHS Foundation Trust a News", - "endpoint": "https://www.stgeorges.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "sutton-council-news", - "provider": "Sutton Council a News", - "endpoint": "https://www.sutton.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "swlstg-news", - "provider": "South West London and St George's Mental Health NHS Trust a News", - "endpoint": "https://www.swlstg.nhs.uk/latest-news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "waltham-forest-council-news", - "provider": "Waltham Forest Council a News", - "endpoint": "https://www.walthamforest.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-fcdo-travel-advice", - "provider": "FCDO a Foreign Travel Advice Index", - "endpoint": "https://www.gov.uk/foreign-travel-advice", - "kind": "html", - "lane": "border", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-border-force", - "provider": "Border Force (UK) a Announcements and Publications", - "endpoint": "https://www.gov.uk/government/organisations/border-force", - "kind": "html", - "lane": "border", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-ukvi", - "provider": "UK Visas and Immigration a Announcements and Publications", - "endpoint": "https://www.gov.uk/government/organisations/uk-visas-and-immigration", - "kind": "html", - "lane": "border", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-terrorism-search", - "provider": "GOV.UK Search - Terrorism", - "endpoint": "https://www.gov.uk/search/all?keywords=terrorism", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "npcc-releases", - "provider": "National Police Chiefs' Council - Releases", - "endpoint": "https://news.npcc.police.uk/releases/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-stops-force-leicestershire", - "provider": "Police.uk - Force Stops (Leicestershire)", - "endpoint": "https://data.police.uk/api/stops-force?force=leicestershire", - "kind": "json", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-stops-street-leicester", - "provider": "Police.uk - Street Stops Around Leicester", - "endpoint": "https://data.police.uk/api/stops-street?lat=52.629729&lng=-1.131592", - "kind": "json", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "foreign-office-blogs", - "provider": "Foreign Office Blogs", - "endpoint": "https://blogs.fco.gov.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "avon-and-somerset-police-news-html", - "provider": "Avon and Somerset Police - News", - "endpoint": "https://www.avonandsomerset.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "avon-somerset-police-news", - "provider": "Avon & Somerset Police a News", - "endpoint": "https://www.avonandsomerset.police.uk/newsroom/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "psni-latest-news", - "provider": "Police Service of Northern Ireland - Latest News", - "endpoint": "https://www.psni.police.uk/latest-news", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-all-rss", - "provider": "West Yorkshire Police - All Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/all/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-appeals-rss", - "provider": "West Yorkshire Police - Appeals Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/appeals/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-news-appeals", - "provider": "West Yorkshire Police - News Appeals", - "endpoint": "https://www.westyorkshirepolice.co.uk/news-appeals", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-news-rss", - "provider": "West Yorkshire Police - News Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-police-releases-rss", - "provider": "West Yorkshire Police - Releases Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/releases/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "attorney-generals-office-html", - "provider": "Attorney General's Office", - "endpoint": "https://www.gov.uk/government/organisations/attorney-generals-office", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "cabinet-office-html", - "provider": "Cabinet Office", - "endpoint": "https://www.gov.uk/government/organisations/cabinet-office", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "crown-office-news", - "provider": "Crown Office and Procurator Fiscal Service - News", - "endpoint": "https://www.copfs.gov.uk/about-copfs/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "echr-uk-grand-chamber-rss", - "provider": "European Court of Human Rights - UK Grand Chamber RSS", - "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echreng&query=%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28+contentsitename%3AECHR+AND+%28NOT+%28doctype%3DPR+OR+doctype%3DHFCOMOLD+OR+doctype%3DHECOMOLD%29%29+AND+%28%28respondent%3D%22GBR%22%29%29+AND+%28%28documentcollectionid%3D%22GRANDCHAMBER%22%29%29%29+XRANK%28cb%3D14%29+doctypebranch%3AGRANDCHAMBER%29+XRANK%28cb%3D13%29+doctypebranch%3ADECGRANDCHAMBER%29+XRANK%28cb%3D12%29+doctypebranch%3ACHAMBER%29+XRANK%28cb%3D11%29+doctypebranch%3AADMISSIBILITY%29+XRANK%28cb%3D10%29+doctypebranch%3ACOMMITTEE%29+XRANK%28cb%3D9%29+doctypebranch%3AADMISSIBILITYCOM%29+XRANK%28cb%3D8%29+doctypebranch%3ADECCOMMISSION%29+XRANK%28cb%3D7%29+doctypebranch%3ACOMMUNICATEDCASES%29+XRANK%28cb%3D6%29+doctypebranch%3ACLIN%29+doctypebranch%3AADVISORYOPINIONS%29+doctypebranch%3AREPORTS%29+doctypebranch%3AEXECUTION%29+doctypebranch%3AMERITS%29+doctypebranch%3ASCREENINGPANEL%29+XRANK%28cb%3D4%29+importance%3A1%29+XRANK%28cb%3D3%29+importance%3A2%29+XRANK%28cb%3D2%29+importance%3A3%29+XRANK%28cb%3D1%29+importance%3A4%29+XRANK%28cb%3D2%29+languageisocode%3AENG%29+XRANK%28cb%3D1%29+languageisocode%3AFRE&ranking. Model. Id=4180000c-8692-45ca-ad63-74bc4163871b&sort=kpdate+Descending&start=0", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "extremism-commission-blog", - "provider": "Commission for Countering Extremism - Blog", - "endpoint": "https://extremismcommission.blog.gov.uk/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "fcdo-html", - "provider": "Foreign, Commonwealth & Development Office", - "endpoint": "https://www.gov.uk/government/organisations/foreign-commonwealth-development-office", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-scot-access-to-justice-latest", - "provider": "Scottish Government - Access to Justice Latest", - "endpoint": "https://www.gov.scot/policies/access-to-justice/latest/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-cabinet-office-atom", - "provider": "Cabinet Office a GOV.UK Atom Feed", - "endpoint": "https://www.gov.uk/government/organisations/cabinet-office.atom", - "kind": "atom", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-hmcts", - "provider": "HMCTS a Courts and Tribunals Announcements", - "endpoint": "https://www.gov.uk/government/organisations/hm-courts-and-tribunals-service", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-home-office-atom", - "provider": "UK Home Office a Atom Feed", - "endpoint": "https://www.gov.uk/government/organisations/home-office.atom", - "kind": "atom", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-ipco", - "provider": "Investigatory Powers Commissioner's Office a GOV.UK", - "endpoint": "https://www.ipco.org.uk/publications/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-mod-atom", - "provider": "Ministry of Defence a GOV.UK Atom Feed", - "endpoint": "https://www.gov.uk/government/organisations/ministry-of-defence.atom", - "kind": "atom", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-moj-atom", - "provider": "Ministry of Justice a GOV.UK Atom Feed", - "endpoint": "https://www.gov.uk/government/organisations/ministry-of-justice.atom", - "kind": "atom", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-news-and-communications-atom", - "provider": "GOV.UK - News and Communications Atom", - "endpoint": "https://www.gov.uk/search/news-and-communications.atom", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hmiprisons-news", - "provider": "HM Inspectorate of Prisons - News", - "endpoint": "https://hmiprisons.justiceinspectorates.gov.uk/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hmiprobation-news", - "provider": "HM Inspectorate of Probation - News", - "endpoint": "https://hmiprobation.justiceinspectorates.gov.uk/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "home-office-media-blog", - "provider": "Home Office Media Blog", - "endpoint": "https://homeofficemedia.blog.gov.uk/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "independent-reviewer-terrorism-legislation", - "provider": "Independent Reviewer of Terrorism Legislation a Reports", - "endpoint": "https://terrorismlegislationreviewer.independent.gov.uk/category/reports/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "independent-reviewer-terrorism-legislation-html", - "provider": "Independent Reviewer of Terrorism Legislation", - "endpoint": "https://www.gov.uk/government/organisations/independent-reviewer-of-terrorism-legislation", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "judiciary-rss-feeds-page", - "provider": "Judiciary UK - RSS Feeds", - "endpoint": "https://www.judiciary.uk/rss-feeds/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "judiciary-uk-announcements-feed", - "provider": "Judiciary UK - Announcements Feed", - "endpoint": "https://www.judiciary.uk/announcements/feed/", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "judiciary-uk-judgments-feed", - "provider": "Judiciary UK - Judgments Feed", - "endpoint": "https://www.judiciary.uk/judgments/feed/", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "judiciary-uk-publications-feed", - "provider": "Judiciary UK - Publications Feed", - "endpoint": "https://www.judiciary.uk/publications/feed/", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "ministry-of-defence-html", - "provider": "Ministry of Defence", - "endpoint": "https://www.gov.uk/government/organisations/ministry-of-defence", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "ons-html", - "provider": "Office for National Statistics", - "endpoint": "https://www.gov.uk/government/organisations/office-for-national-statistics", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "parliament-all-bills-rss", - "provider": "Parliament - All Bills RSS", - "endpoint": "https://bills.parliament.uk/rss/allbills.rss", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "parliament-private-bills-rss", - "provider": "Parliament - Private Bills RSS", - "endpoint": "https://bills.parliament.uk/rss/privatebills.rss", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "parliament-public-bills-rss", - "provider": "Parliament - Public Bills RSS", - "endpoint": "https://bills.parliament.uk/rss/publicbills.rss", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-crime-categories-2024-01", - "provider": "Police.uk - Crime Categories (2024-01)", - "endpoint": "https://data.police.uk/api/crime-categories?date=2024-01", - "kind": "json", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-crimes-street-dates", - "provider": "Police.uk - Street Crime Dataset Dates", - "endpoint": "https://data.police.uk/api/crimes-street-dates", - "kind": "json", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "police-uk-outcomes-for-crime-e11dade0", - "provider": "Police.uk - Outcomes For Crime e11dade0", - "endpoint": "https://data.police.uk/api/outcomes-for-crime/e11dade0a92a912d12329b9b2abb856ac9520434ad6845c30f503e9901d140f1", - "kind": "json", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-fai-determinations-rss", - "provider": "Scottish Courts - Fatal Accident Inquiry Determinations RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Fatal. Accident. Inquiry. Determinations", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-fai-hearings-rss", - "provider": "Scottish Courts - Fatal Accident Inquiry Hearings RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Fatal. Accident. Inquiry. Hearings", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-high-court-justiciary-judgments-rss", - "provider": "Scottish Courts - High Court of Justiciary Judgments RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Judgments/?Court=High+Court+of+Justiciary", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-high-court-practice-notes-rss", - "provider": "Scottish Courts - High Court of Justiciary Practice Notes RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Practice. Notes. And. Directions/?Category=High+Court+of+Justiciary", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-judgments-rss", - "provider": "Scottish Courts - Judgments RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Judgments", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-news-articles-rss", - "provider": "Scottish Courts - News Articles RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/News. Articles", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-publications-rss", - "provider": "Scottish Courts - Publications RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Publications", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "scotcourts-sheriff-criminal-practice-notes-rss", - "provider": "Scottish Courts - Sheriff Court Criminal Practice Notes RSS", - "endpoint": "https://api.pa.web.scotcourts.gov.uk/web/rss/Practice. Notes. And. Directions/?Category=Sheriff+Court+Criminal", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-iopc-news", - "provider": "Independent Office for Police Conduct a News", - "endpoint": "https://www.policeconduct.gov.uk/news", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T08:17:25.806Z", - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "act-campaign", - "provider": "ACT Awareness Campaign", - "endpoint": "https://act.campaign.gov.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-contest-strategy", - "provider": "GOV.UK a CONTEST Counter-Terrorism Strategy", - "endpoint": "https://www.gov.uk/government/collections/contest", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-prevent-strategy", - "provider": "UK Home Office - Prevent duty guidance", - "endpoint": "https://www.gov.uk/government/publications/prevent-duty-guidance", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "met-office-seasonal-advice", - "provider": "Met Office - Seasonal Advice", - "endpoint": "https://www.metoffice.gov.uk/weather/warnings-and-advice/seasonal-advice", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "mi5-uk-threat-level", - "provider": "MI5 (Security Service) a UK Threat Level", - "endpoint": "https://www.mi5.gov.uk/UKThreat. Level/UKThreat. Level.xml", - "kind": "rss", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "npsa-national-protective-security-authority", - "provider": "NPSA - Activity on GOV.UK", - "endpoint": "https://www.gov.uk/government/organisations/national-protective-security-authority.atom", - "kind": "rss", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-ncsc-all-rss", - "provider": "UK NCSC - All Updates RSS", - "endpoint": "https://www.ncsc.gov.uk/api/1/services/v1/all-rss-feed.xml", - "kind": "rss", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "uk-prevent-duty-guidance", - "provider": "GOV.UK a Prevent Duty Guidance (Collection)", - "endpoint": "https://www.gov.uk/government/collections/prevent-duty-guidance", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-proscribed-terrorist-orgs", - "provider": "GOV.UK a Proscribed Terrorist Organisations", - "endpoint": "https://www.gov.uk/government/publications/proscribed-terror-groups-or-organisations--2", - "kind": "html", - "lane": "sanctions", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "hm-treasury-html", - "provider": "HM Treasury", - "endpoint": "https://www.gov.uk/government/organisations/hm-treasury", - "kind": "html", - "lane": "sanctions", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "ofsi-blog-home", - "provider": "OFSI - Blog", - "endpoint": "https://ofsi.blog.gov.uk/", - "kind": "html", - "lane": "sanctions", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dhs-press-releases", - "provider": "US Department of Homeland Security - News", - "endpoint": "https://www.dhs.gov/news", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "nsa-cybersecurity-news", - "provider": "NSA - Cybersecurity Advisories & Guidance", - "endpoint": "https://www.nsa.gov/Press-Room/Press-Releases-Statements/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "rewards-for-justice", - "provider": "U.S. Department of State - Rewards for Justice", - "endpoint": "https://rewardsforjustice.net/rewards/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "state-dept-terrorism", - "provider": "US State Department - Bureau of Counterterrorism", - "endpoint": "https://www.state.gov/bureaus-offices/under-secretary-for-civilian-security-democracy-and-human-rights/bureau-of-counterterrorism/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "cisa-cybersecurity-advisories", - "provider": "CISA - Cybersecurity Alerts & Advisories", - "endpoint": "https://www.cisa.gov/news-events/cybersecurity-advisories", - "kind": "html", - "lane": "oversight", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "us-treasury-ofac-recent-actions", - "provider": "U.S. Treasury (OFAC) - Recent Actions", - "endpoint": "https://ofac.treasury.gov/recent-actions", - "kind": "html", - "lane": "sanctions", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "a-lady-in-london", - "provider": "A Lady in London", - "endpoint": "https://www.aladyinlondon.com/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-24T03:29:13.488Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T03:29:13.488Z", - "lastFailureAt": "2026-04-24T03:29:13.488Z", - "lastCheckedAt": "2026-04-24T03:29:13.488Z" - }, - { - "id": "north-wales-community-alert", - "provider": "North Wales Community Alert", - "endpoint": "https://www.northwalescommunityalert.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 429", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-17T05:46:58.069Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-24T03:29:13.488Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-05-01T03:29:13.488Z", - "lastFailureAt": "2026-04-24T03:29:13.488Z", - "lastCheckedAt": "2026-04-24T03:29:13.488Z" - }, - { - "id": "eurojust-press-releases", - "provider": "Eurojust - Press Releases", - "endpoint": "https://www.eurojust.europa.eu/news/press-releases", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "eu-council-jha-meetings", - "provider": "Council of the EU - JHA Press Releases", - "endpoint": "https://www.consilium.europa.eu/en/press/press-releases/?cc%5B%5D=24", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "norway-pst-news", - "provider": "Norwegian Government - News and Press Releases", - "endpoint": "https://www.regjeringen.no/en/whats-new/news-and-press-releases/id4/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "ocam-be-english", - "provider": "CUTA (Belgium) threat analysis", - "endpoint": "https://cuta.belgium.be/", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T22:54:57.851Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "everything-zany", - "provider": "Everything Zany", - "endpoint": "https://everythingzany.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "manic-mum-life", - "provider": "Manic Mum Life", - "endpoint": "https://www.manic-mumdays.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "really-ree", - "provider": "Really Ree", - "endpoint": "https://reallyree.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T18:02:43.923Z", - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastCheckedAt": "2026-04-23T18:02:43.923Z" - }, - { - "id": "my-community-alert", - "provider": "My Community Alert", - "endpoint": "https://www.mycommunityalert.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T19:28:57.337Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T11:47:27.254Z", - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastCheckedAt": "2026-04-23T11:47:27.254Z" - }, - { - "id": "uk-parliament-defence-committee", - "provider": "UK Parliament a Defence Select Committee", - "endpoint": "https://committees.parliament.uk/committee/24/defence-committee/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "curia-press-rss-en", - "provider": "Court of Justice of the European Union - RSS (EN/FR)", - "endpoint": "https://curia.europa.eu/site/rss.jsp?lang=en&second. Lang=fr", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "eu-cellar-rss-atom", - "provider": "Publications Office of the European Union (CELLAR) a RSS/Atom Feeds", - "endpoint": "https://op.europa.eu/en/web/cellar/cellar-data/rss-and-atom-feeds", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "richmond-council-news", - "provider": "Richmond Council a News", - "endpoint": "https://www.richmond.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "wandsworth-council-news", - "provider": "Wandsworth Council a News", - "endpoint": "https://www.wandsworth.gov.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "scotcourts-rss-feeds-page", - "provider": "Scottish Courts and Tribunals - RSS Feeds", - "endpoint": "https://www.scotcourts.gov.uk/rss-feeds/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "london-resilience", - "provider": "Resilience First - Latest Updates", - "endpoint": "https://www.london.gov.uk/programmes-strategies/fire-and-city-resilience/london-resilience-partnership", - "kind": "html", - "lane": "prevention", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 2, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T23:56:26.571Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T23:56:26.571Z", - "lastFailureAt": "2026-04-22T23:56:26.571Z", - "lastCheckedAt": "2026-04-22T23:56:26.571Z" - }, - { - "id": "echr-key-judgments-rss", - "provider": "European Court of Human Rights - Key Judgments RSS", - "endpoint": "https://hudoc.echr.coe.int/app/transform/rss?length=20&library=echreng&query=%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28%28+contentsitename%3AECHR+AND+%28NOT+%28doctype%3DPR+OR+doctype%3DHFCOMOLD+OR+doctype%3DHECOMOLD%29%29+AND+%28%28importance%3D%221%22%29+OR+%28importance%3D%222%22%29+OR+%28importance%3D%223%22%29%29+AND+%28%28documentcollectionid%3D%22GRANDCHAMBER%22%29+OR+%28documentcollectionid%3D%22CHAMBER%22%29+OR+%28documentcollectionid%3D%22DECGRANDCHAMBER%22%29+OR+%28documentcollectionid%3D%22ADMISSIBILITY%22%29%29%29+XRANK%28cb%3D14%29+doctypebranch%3AGRANDCHAMBER%29+XRANK%28cb%3D13%29+doctypebranch%3ADECGRANDCHAMBER%29+XRANK%28cb%3D12%29+doctypebranch%3ACHAMBER%29+XRANK%28cb%3D11%29+doctypebranch%3AADMISSIBILITY%29+XRANK%28cb%3D10%29+doctypebranch%3ACOMMITTEE%29+XRANK%28cb%3D9%29+doctypebranch%3AADMISSIBILITYCOM%29+XRANK%28cb%3D8%29+doctypebranch%3ADECCOMMISSION%29+XRANK%28cb%3D7%29+doctypebranch%3ACOMMUNICATEDCASES%29+XRANK%28cb%3D6%29+doctypebranch%3ACLIN%29+XRANK%28cb%3D5%29+doctypebranch%3AADVISORYOPINIONS%29+XRANK%28cb%3D4%29+doctypebranch%3AREPORTS%29+XRANK%28cb%3D3%29+doctypebranch%3AEXECUTION%29+XRANK%28cb%3D2%29+doctypebranch%3AMERITS%29+XRANK%28cb%3D1%29+doctypebranch%3ASCREENINGPANEL%29+XRANK%28cb%3D4%29+importance%3A1%29+XRANK%28cb%3D3%29+importance%3A2%29+XRANK%28cb%3D2%29+importance%3A3%29+XRANK%28cb%3D1%29+importance%3A4%29+XRANK%28cb%3D2%29+languageisocode%3AENG%29+XRANK%28cb%3D1%29+languageisocode%3AFRE&ranking. Model. Id=4180000c-8692-45ca-ad63-74bc4163871b&sort=kpdate+Descending&start=0", - "kind": "rss", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 400", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T17:39:27.641Z", - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastCheckedAt": "2026-04-22T17:39:27.641Z" - }, - { - "id": "judiciary-uk-news", - "provider": "Judiciary of England and Wales a News", - "endpoint": "https://www.judiciary.uk/feed/", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T11:44:44.316Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T16:17:11.443Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T16:17:11.443Z", - "lastFailureAt": "2026-04-22T16:17:11.443Z", - "lastCheckedAt": "2026-04-22T16:17:11.443Z" - }, - { - "id": "uclh-news", - "provider": "University College London Hospitals a News", - "endpoint": "https://www.uclh.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "west-yorkshire-police-coroner-appeals-rss", - "provider": "West Yorkshire Police - Coroner Appeals Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/coroner-appeals/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "thank-you-for-the-days", - "provider": "Thank you for the days", - "endpoint": "https://thankyouforthedays.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 2, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "west-yorkshire-police-news", - "provider": "West Yorkshire Police a News", - "endpoint": "https://www.westyorkshire.police.uk/news", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nhs-london-nel-news", - "provider": "NHS North East London a News", - "endpoint": "https://northeastlondon.icb.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T10:07:46.576Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-28T10:07:46.576Z", - "lastFailureAt": "2026-04-21T10:07:46.576Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "kingston-council-news", - "provider": "Kingston Council a News", - "endpoint": "https://www.kingston.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-28T08:24:19.478Z", - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "merton-council-news", - "provider": "Merton Council a News", - "endpoint": "https://www.merton.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-28T08:24:19.478Z", - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "cambridge-news", - "provider": "Cambridge News", - "endpoint": "https://www.cambridge-news.co.uk/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-23T22:53:56.180Z" - }, - { - "id": "deadline-news", - "provider": "Deadline News", - "endpoint": "https://www.deadlinenews.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 20 after repeated failures", - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 500", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-24T03:29:13.488Z" - }, - { - "id": "independent-top-stories", - "provider": "The Independent - Top Stories", - "endpoint": "https://www.independent.co.uk/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-23T20:18:46.625Z" - }, - { - "id": "fmcg-gurus", - "provider": "FMCG Gurus", - "endpoint": "https://fmcggurus.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "portugal-pj-news", - "provider": "Policia Judiciaria Portugal - News", - "endpoint": "https://www.policiajudiciaria.pt/noticias/", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T19:18:33.309Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T15:59:44.503Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T15:59:44.503Z", - "lastFailureAt": "2026-04-20T15:59:44.503Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "guardian-uk-top-stories", - "provider": "The Guardian - UK Top Stories", - "endpoint": "https://www.theguardian.com/uk/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-20T06:30:13.977Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 3, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T23:43:16.267Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "silly-old-sod", - "provider": "Silly Old Sod", - "endpoint": "https://www.sillyoldsod.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent timeouts — endpoint may be overloaded or unreachable", - "quarantinedAt": "2026-04-20T04:05:33.139Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T04:05:33.139Z", - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "serious-fraud-office-news", - "provider": "Serious Fraud Office a News", - "endpoint": "https://www.gov.uk/search/news-and-communications?organisations%5B%5D=serious-fraud-office&parent=serious-fraud-office", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T04:05:33.139Z", - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "cheshire-police-alert", - "provider": "Cheshire Police Alert", - "endpoint": "https://www.cheshirepolicealert.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dc-police-community-messaging", - "provider": "Dorset and Cornwall Police - Community Messaging", - "endpoint": "https://community-messaging.dc.police.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "devon-cornwall-alerts", - "provider": "Devon and Cornwall Alerts", - "endpoint": "https://alerts.dc.police.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "south-yorkshire-police-alerts", - "provider": "South Yorkshire Police Alerts", - "endpoint": "https://www.sypalerts.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "stay-in-the-know-home", - "provider": "Stay In The Know - Community Alerts", - "endpoint": "https://www.stayintheknow.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "stay-in-the-know-latest-alerts", - "provider": "Stay In The Know - Latest Alerts", - "endpoint": "https://www.stayintheknow.co.uk/Content/Pages/Latest-Alerts", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-midlands-community-alerts", - "provider": "WMNow - Community Alerts", - "endpoint": "https://www.wmnow.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "west-yorkshire-community-alert", - "provider": "West Yorkshire Community Alert", - "endpoint": "https://www.wypcommunityalert.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T17:13:24.435Z", - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "france24-europe-rss", - "provider": "France 24 a Europe (RSS)", - "endpoint": "https://www.france24.com/en/europe/rss", - "kind": "rss", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-19T16:03:49.134Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T16:03:49.134Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T06:12:01.477Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T05:47:56.833Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T05:47:56.833Z", - "lastFailureAt": "2026-04-23T05:47:56.833Z", - "lastCheckedAt": "2026-04-23T05:47:56.833Z" - }, - { - "id": "bbc-news-uk-politics-legacy", - "provider": "BBC News a UK Politics (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/uk_politics/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-19T03:30:54.684Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T03:30:54.684Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T15:59:44.503Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "rusi-home", - "provider": "RUSI", - "endpoint": "https://www.rusi.org/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 20 after repeated failures", - "quarantinedAt": "2026-04-19T03:30:54.684Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T03:30:54.684Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T03:30:54.684Z", - "lastFailureAt": "2026-04-19T03:30:54.684Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "gnet-youth-rss", - "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", - "endpoint": "https://gnet-research.org/tag/youth/feed/", - "kind": "rss", - "lane": "prevention", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T22:00:46.520Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T11:07:28.674Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T12:15:37.169Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T22:00:46.520Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T17:16:47.386Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T17:39:27.641Z", - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastCheckedAt": "2026-04-22T17:39:27.641Z" - }, - { - "id": "ealing-council-news", - "provider": "Ealing Council a News", - "endpoint": "https://www.ealing.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T21:09:53.488Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T21:09:53.488Z", - "lastFailureAt": "2026-04-18T21:09:53.488Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "eu-ejustice-news-rss", - "provider": "European e-Justice - News RSS", - "endpoint": "https://e-justice.europa.eu/rss/news_en", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-18T13:27:18.679Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T13:27:18.679Z", - "lastFailureAt": "2026-04-18T13:27:18.679Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "just-security", - "provider": "Just Security a Law, Rights & National Security", - "endpoint": "https://www.justsecurity.org/feed/", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T09:29:55.311Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T23:55:39.351Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T09:29:55.311Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T04:05:33.139Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "evening-shire", - "provider": "Evening Shire", - "endpoint": "https://eveningshire.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T07:21:41.099Z", - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastCheckedAt": "2026-04-23T20:18:46.625Z" - }, - { - "id": "quadrant2design-exhibiting-guides", - "provider": "Quadrant2. Design Exhibiting Guides", - "endpoint": "https://www.quadrant2design.com/exhibiting-guides/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T07:21:41.099Z", - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastCheckedAt": "2026-04-23T23:57:53.617Z" - }, - { - "id": "semibold", - "provider": "Semibold", - "endpoint": "https://www.semibold.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-25T07:21:41.099Z", - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "gnet-radicalisation-rss", - "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", - "endpoint": "https://gnet-research.org/tag/radicalisation/feed/", - "kind": "rss", - "lane": "prevention", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T21:08:30.446Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "barking-dagenham-council-news", - "provider": "Barking and Dagenham Council a News", - "endpoint": "https://www.lbbd.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "hammersmith-fulham-news", - "provider": "Hammersmith and Fulham Council a News", - "endpoint": "https://www.lbhf.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "royal-greenwich-news", - "provider": "Royal Borough of Greenwich a News", - "endpoint": "https://www.royalgreenwich.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-ncsc-threat-reports", - "provider": "National Cyber Security Centre (UK) a Threat Reports", - "endpoint": "https://www.ncsc.gov.uk/api/1/services/v1/report-rss-feed.xml", - "kind": "rss", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T21:08:30.446Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-parliament-isc", - "provider": "UK Parliament a Intelligence and Security Committee (Reports & News)", - "endpoint": "https://isc.independent.gov.uk/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ecfr-feeds-index", - "provider": "ECFR - Feeds", - "endpoint": "https://ecfr.eu/feeds/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "statewatch-news", - "provider": "Statewatch - News", - "endpoint": "https://www.statewatch.org/news/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "clingendael-publications", - "provider": "Clingendael Institute a Publications", - "endpoint": "https://www.clingendael.org/publications", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ecfr-publications", - "provider": "European Council on Foreign Relations (ECFR) a Publications", - "endpoint": "https://ecfr.eu/publications/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "financial-times-world", - "provider": "Financial Times a World", - "endpoint": "https://www.ft.com/world", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "politico-europe", - "provider": "Politico Europe", - "endpoint": "https://www.politico.eu/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "acled-updates", - "provider": "ACLED a Updates and Analysis", - "endpoint": "https://acleddata.com/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "resolve-network-research", - "provider": "RESOLVE Network a Research", - "endpoint": "https://www.resolvenet.org/news", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 17 after repeated failures", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "reuters-uk", - "provider": "Reuters a UK News", - "endpoint": "https://www.reuters.com/world/uk/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "soufan-center-intelbrief", - "provider": "The Soufan Center a Intel. Brief", - "endpoint": "https://thesoufancenter.org/category/intelbrief/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "tony-blair-institute-news", - "provider": "Tony Blair Institute for Global Change a Publications", - "endpoint": "https://institute.global/insights", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "chatham-house-home", - "provider": "Chatham House", - "endpoint": "https://www.chathamhouse.org/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "chatham-house-security-defence", - "provider": "Chatham House - Security and Defence", - "endpoint": "https://www.chathamhouse.org/topics/security-and-defence", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "institute-global-home", - "provider": "Institute for Global Change", - "endpoint": "https://www.institute.global/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "wiltshire-999s", - "provider": "Wiltshire 999s", - "endpoint": "https://www.wiltshire999s.co.uk/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "icsr-kcl", - "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", - "endpoint": "https://icsr.info/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "rand-terrorism-topic", - "provider": "RAND - Terrorism Topic Updates", - "endpoint": "https://www.rand.org/topics/terrorism.html", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "start-baad-database", - "provider": "National Consortium for the Study of Terrorism (START) - Big Allied and Dangerous (BAAD) Database", - "endpoint": "https://www.start.umd.edu/baad/database/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "start-center-publications", - "provider": "START Center (UMD) - News & Publications", - "endpoint": "https://www.start.umd.edu/news", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "bdk-rss", - "provider": "Bund Deutscher Kriminalbeamter - RSS", - "endpoint": "https://www.bdk.de/rss/alle-nachrichten/RSS", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "euractiv-security-rss", - "provider": "BBC News - Europe", - "endpoint": "https://feeds.bbci.co.uk/news/world/europe/rss.xml", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "isd-global-publications", - "provider": "ISD - Publications", - "endpoint": "https://www.isdglobal.org/publications/", - "kind": "html", - "lane": "prevention", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "dw-europe-rss", - "provider": "Deutsche Welle a Europe (RSS)", - "endpoint": "https://rss.dw.com/rdf/rss-en-eu", - "kind": "rss", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "ap-top-news", - "provider": "BBC News - Top Stories", - "endpoint": "https://feeds.bbci.co.uk/news/rss.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "crisis-group", - "provider": "International Crisis Group a Research & Analysis", - "endpoint": "https://www.crisisgroup.org/rss.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "crisis-group-europe", - "provider": "International Crisis Group a Europe (RSS)", - "endpoint": "https://www.crisisgroup.org/rss/56", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "lawfare-blog", - "provider": "Just Security - National Security Analysis", - "endpoint": "https://www.justsecurity.org/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "henry-jackson-society-news", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=henry-jackson-society-news", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun-all", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feeds/all/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun-all-english", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feeds/news-app-english-001-all/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun-homepage", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feeds/favourite-homepage/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun-news-english", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feeds/news-app-english-007-news/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "metro", - "provider": "BBC News - UK", - "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml?source=metro", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "pinknews", - "provider": "Pink. News", - "endpoint": "https://www.pinknews.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T13:19:06.686Z", - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "the-daily-mash", - "provider": "The Daily Mash", - "endpoint": "https://www.thedailymash.co.uk/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T13:19:06.686Z", - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastCheckedAt": "2026-04-23T22:53:56.180Z" - }, - { - "id": "the-scottish-sun", - "provider": "The Scottish Sun", - "endpoint": "https://www.thescottishsun.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "the-sun", - "provider": "The Sun", - "endpoint": "https://www.thesun.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "elluminet-press", - "provider": "9to5. Mac", - "endpoint": "https://9to5mac.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 20 after repeated failures", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "faded-spring", - "provider": "Emily Underworld", - "endpoint": "https://emilyunderworld.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "ian-neate-blog", - "provider": "9to5. Mac", - "endpoint": "https://9to5mac.com/feed/?source=ian-neate-blog", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "sks-business-services", - "provider": "SKS Business Services", - "endpoint": "https://www.sksbusinessservices.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "streetspace", - "provider": "Streetspace", - "endpoint": "https://streetspacegroup.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "police-scotland-news", - "provider": "Police Scotland news", - "endpoint": "https://www.scotland.police.uk/what-s-happening/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 23 after repeated failures", - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T19:32:35.264Z", - "lastFailureAt": "2026-04-19T19:32:35.264Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "frontex-news-releases", - "provider": "Frontex a News Releases", - "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/", - "kind": "html", - "lane": "border", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "enisa-news", - "provider": "ENISA (EU Cybersecurity Agency) a News", - "endpoint": "https://www.enisa.europa.eu/news", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "enisa-rss-transition-page", - "provider": "ENISA - RSS Feeds Transition Notice", - "endpoint": "https://www.enisa.europa.eu/rss-feeds-discontinued-new-subscription-mechanism-coming-soon", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eurojust-press-news-html", - "provider": "Eurojust - Press Releases and News", - "endpoint": "https://www.eurojust.europa.eu/media-and-events/press-releases-and-news", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "europol-media-press", - "provider": "Europol a Media and Press", - "endpoint": "https://www.europol.europa.eu/media-press", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "europol-newsroom-html", - "provider": "Europol - Newsroom", - "endpoint": "https://www.europol.europa.eu/media-press/newsroom", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "finland-supo-news", - "provider": "Finnish Security Intelligence Service - News", - "endpoint": "https://supo.fi/en/current-issues", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "german-interior-ministry-press", - "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", - "endpoint": "https://www.bmz.de/en/feed.rss", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 20 after repeated failures", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 400", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "paris-prefecture-police-rss-page", - "provider": "Paris Prefecture of Police - RSS", - "endpoint": "https://www.prefecturedepolice.interieur.gouv.fr/presentation/les-directions-et-services/le-cabinet-du-prefet-de-police/service-de-la-communication/abonnez-vous-aux-flux-rss", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "spain-interior-ministry-news", - "provider": "Spanish Ministry of the Interior - Press", - "endpoint": "https://www.interior.gob.es/opencms/en/prensa/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "ertzaintza-news", - "provider": "Ertzaintza - News", - "endpoint": "https://www.ertzaintza.euskadi.eus/lfr/eu/webertzaintza/noticias", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "finland-police-news", - "provider": "Finnish Police - News", - "endpoint": "https://poliisi.fi/en/news", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "paris-prefecture-police-press-releases", - "provider": "Paris Prefecture of Police - Press Releases", - "endpoint": "https://www.prefecturedepolice.interieur.gouv.fr/actualites-et-presse/communiques-de-presse/communiques-de-presse", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "romanian-police-news", - "provider": "Romanian Police - News", - "endpoint": "https://www.politiaromana.ro/en/news", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eu-commission-presscorner-home", - "provider": "Council of the EU - Press Releases (RSS)", - "endpoint": "https://www.consilium.europa.eu/en/rss/pressreleases.ashx?source=eu-commission-presscorner-home", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "eu-council-fight-against-terrorism", - "provider": "Council of the EU - Fight Against Terrorism", - "endpoint": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eu-council-rss-index", - "provider": "Council of the EU - RSS Index", - "endpoint": "https://www.consilium.europa.eu/en/about-site/rss/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eu-ct-coordinator", - "provider": "EU Counter-Terrorism Coordinator a Council of the EU", - "endpoint": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/eu-counter-terrorism-coordinator/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eu-fra-rss", - "provider": "EU Agency for Fundamental Rights (FRA) a RSS", - "endpoint": "https://fra.europa.eu/en/content/rss", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "eurojust-rss-feeds-page", - "provider": "Eurojust - RSS Feeds", - "endpoint": "https://www.eurojust.europa.eu/rss-feeds", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "europol-tesat-report", - "provider": "Europol - TESAT Report", - "endpoint": "https://www.europol.europa.eu/publications-events/main-reports/tesat-report", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "fra-rss", - "provider": "Human Rights Watch - News RSS", - "endpoint": "https://www.hrw.org/rss/news", - "kind": "rss", - "lane": "oversight", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "europol-eu-iru", - "provider": "Europol a EU Internet Referral Unit (EU IRU)", - "endpoint": "https://www.europol.europa.eu/about-europol/european-counter-terrorism-centre-ectc/eu-internet-referal-unit-eu-iru", - "kind": "html", - "lane": "prevention", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ncsc-nl-rss", - "provider": "NCSC Netherlands - RSS", - "endpoint": "https://feeds.ncsc.nl/nieuws.rss", - "kind": "rss", - "lane": "prevention", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "eu-council-terrorism-sanctions", - "provider": "Council of the EU - Sanctions Against Terrorism", - "endpoint": "https://www.consilium.europa.eu/en/policies/sanctions-against-terrorism/", - "kind": "html", - "lane": "sanctions", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "unhcr-europe-news", - "provider": "UNHCR Europe a News", - "endpoint": "https://www.unhcr.org/europe/news", - "kind": "html", - "lane": "border", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "french-interior-ministry-news", - "provider": "French Ministry of the Interior - News", - "endpoint": "https://www.interieur.gouv.fr/actualites", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "netherlands-nctv-news", - "provider": "Dutch NCTV - News", - "endpoint": "https://www.nctv.nl/actueel", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "french-gendarmerie-news", - "provider": "Gendarmerie Nationale - News", - "endpoint": "https://www.gendarmerie.interieur.gouv.fr/gendarmerie/actualites", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "french-police-nationale-news", - "provider": "Police Nationale - News", - "endpoint": "https://www.police-nationale.interieur.gouv.fr/actualites", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ireland-gardai-press", - "provider": "An Garda Siochana - Press Releases", - "endpoint": "https://www.garda.ie/en/about-us/our-departments/office-of-corporate-communications/press-releases/", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "paris-police-prefecture-news", - "provider": "France24 - France (RSS)", - "endpoint": "https://www.france24.com/en/france/rss", - "kind": "rss", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "portugal-psp-news", - "provider": "The Portugal News - Crime", - "endpoint": "https://www.theportugalnews.com/news/crime", - "kind": "html", - "lane": "incidents", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "coe-counter-terrorism", - "provider": "Council of Europe a Counter-Terrorism", - "endpoint": "https://www.coe.int/en/web/counter-terrorism/news-updates", - "kind": "html", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "netherlands-prosecution-news", - "provider": "Dutch Public Prosecution Service - News", - "endpoint": "https://www.om.nl/actueel/nieuws", - "kind": "html", - "lane": "oversight", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "pst-no-english", - "provider": "PST (Norway) English reporting page", - "endpoint": "https://www.pst.no/en/report/", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ran-network", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=ran-network", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "supo-fi-english", - "provider": "SUPO Finland news and press releases", - "endpoint": "https://supo.fi/en/news-and-press-releases", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "iom-news", - "provider": "IOM (International Organization for Migration) a News", - "endpoint": "https://www.iom.int/news", - "kind": "html", - "lane": "border", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "unsc-counter-terrorism-committee", - "provider": "UN Security Council - Counter-Terrorism Committee (CTC) Updates", - "endpoint": "https://www.un.org/securitycouncil/ctc/news", - "kind": "html", - "lane": "oversight", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "fatf-news", - "provider": "Financial Action Task Force (FATF) a News", - "endpoint": "https://www.fatf-gafi.org/en/publications.html", - "kind": "html", - "lane": "sanctions", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "interpol-notices", - "provider": "INTERPOL a Notices", - "endpoint": "https://www.interpol.int/How-we-work/Notices", - "kind": "html", - "lane": "sanctions", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "unsc-1267-press-releases", - "provider": "UN Security Council - ISIL/Da'esh & Al-Qaeda Sanctions Committee Press Releases", - "endpoint": "https://main.un.org/securitycouncil/en/sanctions/1267/press-releases", - "kind": "html", - "lane": "sanctions", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "unsc-consolidated-list", - "provider": "UN Security Council - Consolidated Sanctions List Updates (RSS)", - "endpoint": "https://main.un.org/securitycouncil/en/rss-updates-unsc-consolidated-list", - "kind": "rss", - "lane": "sanctions", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "barnet-council-news", - "provider": "Barnet Post", - "endpoint": "https://barnetpost.co.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "city-of-london-police-fraud-reporting", - "provider": "City of London Police - Fraud Reporting", - "endpoint": "https://www.cityoflondon.police.uk/ro/report/fo/v1/fraud/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cnwl-news", - "provider": "Central and North West London NHS Foundation Trust a News", - "endpoint": "https://www.cnwl.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "east-london-nhs-news", - "provider": "East London NHS Foundation Trust a News", - "endpoint": "https://www.elft.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "enfield-council-news", - "provider": "Enfield Council a News and Events", - "endpoint": "https://www.enfield.gov.uk/news-and-events", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "haringey-council-news", - "provider": "Haringey Community Press", - "endpoint": "https://haringeycommunitypress.co.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "harrow-council-news", - "provider": "Harrow Council a News", - "endpoint": "https://www.harrow.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "heathrow-media-centre", - "provider": "Heathrow a Media Centre", - "endpoint": "https://mediacentre.heathrow.com/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "imperial-healthcare-news", - "provider": "Imperial College Healthcare NHS Trust a News", - "endpoint": "https://www.imperial.nhs.uk/about-us/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "kensington-chelsea-newsroom", - "provider": "Royal Borough of Kensington and Chelsea a Newsroom", - "endpoint": "https://www.rbkc.gov.uk/newsroom", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "lewisham-council-news", - "provider": "Salamander News", - "endpoint": "https://salamandernews.org/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "london-ambulance-news", - "provider": "London Ambulance Service a News", - "endpoint": "https://www.londonambulance.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-city-airport-media-centre", - "provider": "London City Airport a Media Centre", - "endpoint": "https://www.londoncityairport.com/corporate/media-centre", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-councils-news", - "provider": "London Councils a News", - "endpoint": "https://www.londoncouncils.gov.uk/news-and-press-releases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-fire-brigade-news", - "provider": "London Fire Brigade a News", - "endpoint": "https://www.london-fire.gov.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-gov-home", - "provider": "London.gov.uk", - "endpoint": "https://www.london.gov.uk/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-gov-press-releases-html", - "provider": "London.gov.uk - Press Releases", - "endpoint": "https://www.london.gov.uk/press-releases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nhs-london-ncl-news", - "provider": "NHS North Central London a News", - "endpoint": "https://nclhealthandcare.org.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nhs-london-swl-news", - "provider": "NHS South West London a News", - "endpoint": "https://www.southwestlondon.icb.nhs.uk/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "north-middlesex-news", - "provider": "North Middlesex University Hospital a News", - "endpoint": "https://www.northmid.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "port-of-london-authority-news", - "provider": "Port of London Authority a News", - "endpoint": "https://pla.co.uk/News", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "royal-free-london-news", - "provider": "Royal Free London NHS Foundation Trust a News", - "endpoint": "https://www.royalfree.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "southwark-newsroom", - "provider": "Southwark Council a Newsroom", - "endpoint": "https://news.southwark.gov.uk/newsroom/news/rss", - "kind": "rss", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "tavistock-portman-news", - "provider": "Tavistock and Portman NHS Foundation Trust a News", - "endpoint": "https://tavistockandportman.nhs.uk/about-us/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "tfl-press-releases", - "provider": "Transport for London - Press Releases", - "endpoint": "https://tfl.gov.uk/info-for/media/press-releases?source=tfl-press-releases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "tfl-press-releases-html", - "provider": "Transport for London - Press Releases", - "endpoint": "https://tfl.gov.uk/info-for/media/press-releases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "city-of-london-police-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=city-of-london-police-news", - "kind": "html", - "lane": "incidents", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "city-of-london-police-news-html", - "provider": "City of London Police - News", - "endpoint": "https://www.cityoflondon.police.uk/news/city-of-london-police/news/", - "kind": "html", - "lane": "incidents", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "city-of-london-police-newsroom", - "provider": "Metropolitan Police Service - News", - "endpoint": "https://news.met.police.uk/", - "kind": "html", - "lane": "incidents", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "ct-policing-london", - "provider": "Counter Terrorism Policing London", - "endpoint": "https://www.counterterrorism.police.uk/counter-terrorism-policing-london/", - "kind": "html", - "lane": "incidents", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "mopac-html", - "provider": "Mayor's Office for Policing and Crime", - "endpoint": "https://www.london.gov.uk/programmes-strategies/mayors-office-policing-and-crime-mopac", - "kind": "html", - "lane": "oversight", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "bbc-news-front-page-legacy", - "provider": "BBC News a Front Page (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/front_page/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T22:12:37.099Z", - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bbc-news-uk", - "provider": "BBC News a UK", - "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T22:12:37.099Z", - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "essex-police-news", - "provider": "Essex Police a News", - "endpoint": "https://www.essex.police.uk/news/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "kent-police-news", - "provider": "Kent Police a News", - "endpoint": "https://www.kent.police.uk/news/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "mi5-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=mi5-news", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "national-crime-agency-news", - "provider": "National Crime Agency a News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "report-fraud-home", - "provider": "Report Fraud", - "endpoint": "https://www.reportfraud.police.uk/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "report-fraud-newsroom", - "provider": "Report Fraud - Newsroom", - "endpoint": "https://www.reportfraud.police.uk/collection/newsroom/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "church-of-england-newspaper", - "provider": "Church of England Newspaper", - "endpoint": "https://www.churchnewspaper.com/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T22:12:37.099Z", - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bedfordshire-police-news", - "provider": "Bedfordshire Police - News", - "endpoint": "https://www.beds.police.uk/news/bedfordshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "bedfordshire-police-news-search", - "provider": "Bedfordshire Police - News Search", - "endpoint": "https://www.beds.police.uk/news/news-search/?ct=News", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "british-transport-police-news", - "provider": "British Transport Police Authority - News Feed", - "endpoint": "https://btpa.police.uk/feed/", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "btp-british-transport-police-news-html", - "provider": "British Transport Police - News", - "endpoint": "https://www.btp.police.uk/news/british-transport-police/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cambridgeshire-police-news-search", - "provider": "Cambridgeshire Police - News Search", - "endpoint": "https://www.cambs.police.uk/news/news-search/?ct=News", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cheshire-police-news", - "provider": "Cheshire Constabulary - News", - "endpoint": "https://www.cheshire.police.uk/news/cheshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cleveland-police-news", - "provider": "Cleveland Police - News", - "endpoint": "https://www.cleveland.police.uk/news/cleveland/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cps-news-centre", - "provider": "Crown Prosecution Service a News Centre", - "endpoint": "https://www.cps.gov.uk/news", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-north-west", - "provider": "Counter Terrorism Policing North West", - "endpoint": "https://www.counterterrorism.police.uk/north-west/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-uk-latest-news", - "provider": "Counter Terrorism Policing UK a Latest News", - "endpoint": "https://www.counterterrorism.police.uk/latest-news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-uk-rss-feed", - "provider": "Counter Terrorism Policing UK - Latest News", - "endpoint": "https://www.counterterrorism.police.uk/latest-news/?source=ct-policing-uk-rss-feed", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T14:03:06.243Z", - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastCheckedAt": "2026-04-23T14:03:06.243Z" - }, - { - "id": "cumbria-police-news", - "provider": "Cumbria Police - News", - "endpoint": "https://www.cumbria.police.uk/news/cumbria/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cumbria-police-newsroom", - "provider": "Cumbria Police - Newsroom", - "endpoint": "https://www.news.cumbria.police.uk/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "derbyshire-police-news", - "provider": "Derbyshire Police - News", - "endpoint": "https://www.derbyshire.police.uk/news/derbyshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "devon-and-cornwall-police-newsroom", - "provider": "Devon and Cornwall Police - Newsroom", - "endpoint": "https://news.devon-cornwall.police.uk/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "devon-cornwall-police-news", - "provider": "Devon and Cornwall Police - News", - "endpoint": "https://www.devon-cornwall.police.uk/news/devon-cornwall/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "dorset-police-news", - "provider": "Dorset Police - News", - "endpoint": "https://www.dorset.police.uk/news/dorset/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "dorset-police-newsroom", - "provider": "Dorset Police - Newsroom", - "endpoint": "https://news.dorset.police.uk/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "durham-constabulary-news", - "provider": "Durham Constabulary a News", - "endpoint": "https://www.durham.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "durham-police-durham-news", - "provider": "Durham Police - Durham News", - "endpoint": "https://www.durham.police.uk/news/durham/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "dyfed-powys-police-news", - "provider": "Dyfed-Powys Police - News", - "endpoint": "https://www.dyfed-powys.police.uk/news/dyfed-powys/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "essex-police-news-html", - "provider": "Essex Police - News", - "endpoint": "https://www.essex.police.uk/news/essex/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gloucestershire-police-news", - "provider": "Gloucestershire Police - News", - "endpoint": "https://www.gloucestershire.police.uk/news/gloucestershire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gmp-news", - "provider": "Greater Manchester Police a News", - "endpoint": "https://www.gmp.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "greater-manchester-police-news", - "provider": "Greater Manchester Police - News", - "endpoint": "https://www.gmp.police.uk/news/greater-manchester/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gwent-police-news", - "provider": "Gwent Police - News", - "endpoint": "https://www.gwent.police.uk/news/gwent/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "hampshire-police-news", - "provider": "Hampshire & Isle of Wight Constabulary a News", - "endpoint": "https://www.hampshire.police.uk/news/hampshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "hertfordshire-police-news", - "provider": "Hertfordshire Constabulary a News", - "endpoint": "https://www.herts.police.uk/news/hertfordshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "humberside-police-news-search", - "provider": "Humberside Police - News Search", - "endpoint": "https://www.humberside.police.uk/news/news-search/?ct=News", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "kent-police-news-html", - "provider": "Kent Police - News", - "endpoint": "https://www.kent.police.uk/news/kent/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "lancashire-constabulary-news", - "provider": "Lancashire Constabulary a News", - "endpoint": "https://www.lancashire.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "leicestershire-police-news", - "provider": "National Crime Agency - News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news?source=leicestershire-police-news", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "lincolnshire-police-news", - "provider": "Lincolnshire Police - News", - "endpoint": "https://www.lincs.police.uk/news/lincolnshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "merseyside-police-news", - "provider": "Merseyside Police a News", - "endpoint": "https://www.merseyside.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "merseyside-police-news-html", - "provider": "Merseyside Police - News", - "endpoint": "https://www.merseyside.police.uk/news/merseyside-police/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "norfolk-constabulary-news", - "provider": "Norfolk Constabulary - News", - "endpoint": "https://www.norfolk.police.uk/news/norfolk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "north-wales-police-news", - "provider": "North Wales Police - News", - "endpoint": "https://www.northwales.police.uk/news/north-wales/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "north-yorkshire-police-news-html", - "provider": "North Yorkshire Police - News", - "endpoint": "https://www.northyorkshire.police.uk/news/north-yorkshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "northamptonshire-police-news-html", - "provider": "Northamptonshire Police - News", - "endpoint": "https://www.northants.police.uk/news/northants/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "northumbria-police-news", - "provider": "North East Bylines", - "endpoint": "https://northeastbylines.co.uk/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "northumbria-police-northumbria-news", - "provider": "Northumbria Police - Northumbria News", - "endpoint": "https://www.northumbria.police.uk/news/northumbria/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nottinghamshire-police-news", - "provider": "Nottinghamshire Police a News", - "endpoint": "https://www.nottinghamshire.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nottinghamshire-police-nottinghamshire-news", - "provider": "Nottinghamshire Police - Nottinghamshire News", - "endpoint": "https://www.nottinghamshire.police.uk/news/nottinghamshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "psni-news", - "provider": "Police Service of Northern Ireland a News", - "endpoint": "https://www.psni.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "south-wales-police-news", - "provider": "South Wales Police - News", - "endpoint": "https://www.south-wales.police.uk/news/south-wales/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "south-yorkshire-police-news", - "provider": "South Yorkshire Police a News", - "endpoint": "https://www.southyorkshire.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "staffordshire-police-news", - "provider": "Staffordshire Police a News", - "endpoint": "https://www.staffordshire.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "staffordshire-police-staffordshire-news", - "provider": "Staffordshire Police - Staffordshire News", - "endpoint": "https://www.staffordshire.police.uk/news/staffordshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "suffolk-constabulary-news", - "provider": "Suffolk Constabulary - News", - "endpoint": "https://www.suffolk.police.uk/news/suffolk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "surrey-police-news", - "provider": "Surrey Police a News", - "endpoint": "https://www.surrey.police.uk/news/surrey/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "sussex-police-news", - "provider": "Sussex Police a News", - "endpoint": "https://www.sussex.police.uk/news/sussex/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "thames-valley-police-news", - "provider": "Thames Valley Police a News", - "endpoint": "https://www.thamesvalley.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "thames-valley-police-news-html", - "provider": "Thames Valley Police - Thames Valley News", - "endpoint": "https://www.thamesvalley.police.uk/news/thames-valley/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "warwickshire-police-news", - "provider": "Warwickshire Connected - Latest Alerts", - "endpoint": "https://www.warwickshireconnected.com/Content/Pages/Latest-Alerts", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "west-mercia-police-news-html", - "provider": "West Mercia Police - News", - "endpoint": "https://www.westmercia.police.uk/news/west-mercia/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "west-midlands-police-news", - "provider": "West Midlands Police a News", - "endpoint": "https://www.westmidlands.police.uk/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "west-yorkshire-police-missing-rss", - "provider": "West Yorkshire Police - Missing Feed", - "endpoint": "https://www.westyorkshire.police.uk/news/missing/feed", - "kind": "rss", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "wiltshire-police-news", - "provider": "Wiltshire Police - News", - "endpoint": "https://www.wiltshire.police.uk/news/wiltshire/news/", - "kind": "html", - "lane": "incidents", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "cps-homepage", - "provider": "Crown Prosecution Service", - "endpoint": "https://www.cps.gov.uk/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gov-uk-hmic", - "provider": "HM Inspectorate of Constabulary a GOV.UK", - "endpoint": "https://hmicfrs.justiceinspectorates.gov.uk/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gov-uk-parliament-jcnss", - "provider": "UK Parliament a Joint Committee on National Security Strategy", - "endpoint": "https://committees.parliament.uk/committee/54/joint-committee-on-the-national-security-strategy/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "lords-in-focus-rss", - "provider": "Hansard Society - Despatch Box", - "endpoint": "https://www.hansardsociety.org.uk/blog", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "lords-library-notes-rss", - "provider": "Hansard Society - Despatch Box", - "endpoint": "https://www.hansardsociety.org.uk/blog?source=lords-library-notes-rss", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "police-ombudsman-current-investigations", - "provider": "Police Ombudsman - Current Investigations", - "endpoint": "https://www.policeombudsman.org/investigation-reports/current-investigations", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "police-uk-outcomes-at-location-1609590", - "provider": "Police Data UK - Outcomes At Location API Docs", - "endpoint": "https://data.police.uk/docs/method/outcomes-at-location/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "uk-parliament-business-news", - "provider": "UK Parliament - Business News", - "endpoint": "https://www.parliament.uk/business/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-parliament-foreign-affairs-committee", - "provider": "UK Parliament a Foreign Affairs Select Committee", - "endpoint": "https://committees.parliament.uk/committee/78/foreign-affairs-committee/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-parliament-justice-committee", - "provider": "UK Parliament a Justice Select Committee", - "endpoint": "https://committees.parliament.uk/committee/102/justice-committee/news/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-prevent-programme", - "provider": "Counter Terrorism Policing - Prevent", - "endpoint": "https://www.counterterrorism.police.uk/what-we-do/counter-terrorism/prevent/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "ct-policing-what-you-can-do", - "provider": "Counter Terrorism Policing - What You Can Do", - "endpoint": "https://www.counterterrorism.police.uk/what-you-can-do/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gov-uk-report-terrorism", - "provider": "GOV.UK - Report Terrorism", - "endpoint": "https://www.gov.uk/report-terrorism", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "gov-uk-terrorism-national-emergency", - "provider": "GOV.UK - Terrorism National Emergency", - "endpoint": "https://www.gov.uk/terrorism-national-emergency", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "mi5-terrorism-threat-levels", - "provider": "MI5 - Terrorism Threat Levels", - "endpoint": "https://www.mi5.gov.uk/threats-and-advice/terrorism-threat-levels", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "northamptonshire-talking", - "provider": "Northamptonshire Talking", - "endpoint": "https://www.northamptonshiretalking.co.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "npsa-blog", - "provider": "NPSA - Blog", - "endpoint": "https://www.npsa.gov.uk/blog", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "npsa-blog-news", - "provider": "NPSA - Blog News", - "endpoint": "https://www.npsa.gov.uk/blog/news", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "protectuk", - "provider": "ProtectUK (NPSA) a Protective Security Guidance", - "endpoint": "https://www.protectuk.police.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-ncsc-homepage", - "provider": "UK NCSC - Homepage", - "endpoint": "https://www.ncsc.gov.uk/", - "kind": "html", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "uk-sanctions-list", - "provider": "UK Sanctions List (FCDO) a Consolidated List (XML Service)", - "endpoint": "https://sanctionslist.fcdo.gov.uk/docs/UK-Sanctions-List.xml", - "kind": "html", - "lane": "sanctions", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "fbi-national-press-releases", - "provider": "FBI - National Press Releases (RSS)", - "endpoint": "https://www.fbi.gov/feeds/national-press-releases/RSS", - "kind": "rss", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "fbi-stories", - "provider": "FBI - Top Stories (RSS)", - "endpoint": "https://www.fbi.gov/feeds/fbi-top-stories/rss.xml", - "kind": "rss", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "fbi-top-stories", - "provider": "FBI - Top Stories (RSS)", - "endpoint": "https://www.fbi.gov/feeds/fbi-top-stories/rss.xml?source=fbi-top-stories", - "kind": "rss", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "HTML structure changed — selectors no longer match; needs parser update", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "consecutiveFailures": 7, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T10:13:21.253Z", - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastCheckedAt": "2026-04-23T10:13:21.253Z" - }, - { - "id": "us-house-homeland-security", - "provider": "US House Committee on Homeland Security - News", - "endpoint": "https://homeland.house.gov/news/", - "kind": "html", - "lane": "oversight", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 6, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "belgium-crisis-centre-news", - "provider": "Belgian National Crisis Centre - Newsroom", - "endpoint": "https://crisiscenter.be/en/newsroom", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 5 after repeated failures", - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "german-bka-press", - "provider": "German BKA - Press Releases (2026 archive)", - "endpoint": "https://www.bka.de/DE/Presse/Listenseite_Pressemitteilungen/2026/2026_node.html", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 5 after repeated failures", - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "policia-nacional-news", - "provider": "Policia Nacional - Press", - "endpoint": "https://www.policia.es/_es/comunicacion_salaprensa.php", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Health score degraded to 5 after repeated failures", - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-19T18:05:04.781Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T18:05:04.781Z", - "lastFailureAt": "2026-04-19T18:05:04.781Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "bfv-de-english", - "provider": "BfV service page (Federal Office for the Protection of the Constitution)", - "endpoint": "https://www.verfassungsschutz.de/EN/service/service_node.html", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T11:07:28.674Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T11:07:28.674Z", - "lastFailureAt": "2026-04-17T11:07:28.674Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "german-bka-press-releases-de", - "provider": "BKA Germany - Press Releases", - "endpoint": "https://www.bka.de/DE/Aktuelle. Informationen/Aktuelle. Meldungen/Pressemeldungen/pressemitteilungen_node.html", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Infrastructure instability — mixed timeout and network errors; auto-retry likely to recover", - "quarantinedAt": "2026-04-17T08:04:04.612Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T07:32:24.475Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T17:39:27.641Z", - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastCheckedAt": "2026-04-22T17:39:27.641Z" - }, - { - "id": "surgezirc-uk", - "provider": "Surge. Zirc UK", - "endpoint": "https://surgezirc.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "quarantinedAt": "2026-04-17T08:04:04.612Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T14:11:10.963Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T11:47:27.254Z", - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastCheckedAt": "2026-04-23T11:47:27.254Z" - }, - { - "id": "arcticdry", - "provider": "Arctic. Dry", - "endpoint": "https://www.arcticdry.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T08:04:04.612Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-24T08:04:04.612Z", - "lastFailureAt": "2026-04-17T08:04:04.612Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "police-uk-all-crime-leicester", - "provider": "Police.uk - Street Crime Around Leicester", - "endpoint": "https://data.police.uk/api/crimes-street/all-crime?lat=52.629729&lng=-1.131592", - "kind": "json", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-23T23:55:39.351Z", - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "daily-mail-online", - "provider": "Daily Mail Online - Popular Stories", - "endpoint": "https://www.dailymail.co.uk/home/index.rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-23T23:55:39.351Z", - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "counter-extremism-project-news", - "provider": "Counter Extremism Project a News", - "endpoint": "https://www.counterextremism.com/news-and-media", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T12:14:24.733Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "rusi-terrorism-conflict", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T12:14:24.733Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T12:14:24.733Z", - "lastFailureAt": "2026-04-20T12:14:24.733Z", - "lastCheckedAt": "2026-04-24T03:29:13.488Z" - }, - { - "id": "gov-uk-counter-extremism-commissioner", - "provider": "Counter Extremism Commissioner a GOV.UK", - "endpoint": "https://www.govwire.co.uk/rss/commission-for-countering-extremism", - "kind": "rss", - "lane": "prevention", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-23T19:01:30.233Z", - "lastFailureAt": "2026-04-16T19:01:30.233Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "denmark-pet-news", - "provider": "Danish Security and Intelligence Service - News", - "endpoint": "https://pet.dk/aktuelt/nyhedsliste", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "german-bfv-news", - "provider": "German BfV - Press", - "endpoint": "https://www.verfassungsschutz.de/EN/service/press/press_node.html", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nctv-english-rss", - "provider": "NCTV Netherlands - English RSS", - "endpoint": "https://english.nctv.nl/latest/news", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "belgian-federal-police-news", - "provider": "Belgian Federal Police - News", - "endpoint": "https://www.police.be/5998/en/node/10868", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T11:47:27.254Z", - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastCheckedAt": "2026-04-23T11:47:27.254Z" - }, - { - "id": "czech-police-news", - "provider": "Police of the Czech Republic - News", - "endpoint": "https://policie.gov.cz/clanek/Police-of-the-Czech-Republic.aspx", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "guardia-civil-news", - "provider": "El Pais English - Guardia Civil", - "endpoint": "https://english.elpais.com/news/guardia-civil/", - "kind": "html", - "lane": "incidents", - "region": "eu", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "switzerland-fedpol-news", - "provider": "Swiss fedpol - News", - "endpoint": "https://www.fedpol.admin.ch/en/newnsb", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browser. Type.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell ╔════════════════════════════════════════════════════════════╗ ║ Looks like Playwright was just installed or updated. ║ ║ Please run the following command to download new browsers: ║ ║ ║ ║ npx playwright install ║ ║ ║ ║ <3 Playwright Team ║ ╚════════════════════════════════════════════════════════════╝", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T21:59:30.032Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T21:59:30.032Z", - "lastFailureAt": "2026-04-22T21:59:30.032Z", - "lastCheckedAt": "2026-04-22T21:59:30.032Z" - }, - { - "id": "pet-dk-english", - "provider": "PET (Denmark) a English News", - "endpoint": "https://pet.dk/en/news-and-publications/news-list", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "nato-news-rss", - "provider": "NATO a News (RSS)", - "endpoint": "https://www.nato.int/en/news-and-events/articles/news", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "occrp-news", - "provider": "OCCRP a Organized Crime and Corruption Reporting Project", - "endpoint": "https://www.occrp.org/en/announcements", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "rferl-security-news-rss", - "provider": "Radio Free Europe/Radio Liberty a Security (RSS)", - "endpoint": "https://www.rferl.org/latest-news", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T08:39:19.161Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastCheckedAt": "2026-04-23T22:53:56.180Z" - }, - { - "id": "unodc-news", - "provider": "UNODC (UN Office on Drugs and Crime) a Press Releases", - "endpoint": "https://www.unodc.org/unodc/en/news/news.html", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gctf-news", - "provider": "Global Counterterrorism Forum (GCTF) a News", - "endpoint": "https://www.thegctf.org/News-Stories/PgrID/918/PageID/3", - "kind": "html", - "lane": "oversight", - "region": "international", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "barts-health-news", - "provider": "Barts Health NHS Trust a News", - "endpoint": "https://www.bartshealth.nhs.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T08:09:12.931Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T08:09:12.931Z", - "lastFailureAt": "2026-04-23T08:09:12.931Z", - "lastCheckedAt": "2026-04-23T08:09:12.931Z" - }, - { - "id": "bromley-council-news", - "provider": "Bromley Council a Newsroom", - "endpoint": "https://www.bromley.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "homerton-healthcare-news", - "provider": "Homerton Healthcare NHS Foundation Trust a News", - "endpoint": "https://www.homerton.nhs.uk/trust-news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "mayor-of-london-press-releases", - "provider": "Mayor of London a Press Releases", - "endpoint": "https://www.london.gov.uk/rss-feeds/80610", - "kind": "rss", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "nhs-london-sel-news", - "provider": "NHS South East London a News", - "endpoint": "https://www.selondonics.org/icb/about-us/news/", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "slam-news", - "provider": "South London and Maudsley NHS Foundation Trust a News", - "endpoint": "https://slam.nhs.uk/pressreleases", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "tower-hamlets-council-news", - "provider": "Tower Hamlets Council a News", - "endpoint": "https://www.towerhamlets.gov.uk/News_events/News.aspx", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "westminster-city-council-news", - "provider": "Westminster City Council a News", - "endpoint": "https://www.westminster.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "whittington-health-news", - "provider": "Whittington Health a News", - "endpoint": "https://www.whittington.nhs.uk/mini-apps/news/news. Items.asp", - "kind": "html", - "lane": "context", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 5, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "london-assembly-press-releases", - "provider": "London Assembly a Press Releases", - "endpoint": "https://www.london.gov.uk/rss-feeds/80611", - "kind": "rss", - "lane": "oversight", - "region": "london", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "gov-uk-defence-intelligence", - "provider": "UK Defence Intelligence a GOV.UK", - "endpoint": "https://www.gov.uk/government/groups/defence-intelligence", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "mi5-news-rss-direct", - "provider": "MI5 - News RSS", - "endpoint": "https://www.mi5.gov.uk/news", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "daily-politics", - "provider": "Daily Politics", - "endpoint": "https://www.dailypolitics.com/categories/r. RzjN-bU/", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T08:39:19.161Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastCheckedAt": "2026-04-23T22:53:56.180Z" - }, - { - "id": "joint-committee-human-rights-html", - "provider": "Joint Committee on Human Rights", - "endpoint": "https://committees.parliament.uk/committee/93/human-rights-joint-committee/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T19:31:23.009Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T19:31:23.009Z", - "lastFailureAt": "2026-04-23T19:31:23.009Z", - "lastCheckedAt": "2026-04-23T19:31:23.009Z" - }, - { - "id": "scottish-government-justice-news", - "provider": "Scottish Government - Justice and Safety", - "endpoint": "https://www.gov.scot/policies/community-safety/latest/", - "kind": "html", - "lane": "oversight", - "region": "uk", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "dni-press-releases", - "provider": "Office of the Director of National Intelligence - Press Releases", - "endpoint": "https://www.dni.gov/index.php/who-we-are/348-newsroom/press-releases", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "doj-nsd-press-releases", - "provider": "U.S. Department of Justice - National Security Division Press Releases", - "endpoint": "https://www.justice.gov/nsd/press-room", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Endpoint likely removed — all recent errors are HTTP 404", - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T06:30:13.977Z", - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "us-treasury-ofac-press-releases", - "provider": "U.S. Treasury (OFAC) - Press Releases", - "endpoint": "https://ofac.treasury.gov/press-releases", - "kind": "html", - "lane": "sanctions", - "region": "us", - "healthScore": 0, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-23T15:11:26.228Z", - "lastFailureAt": "2026-04-16T15:11:26.228Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "bbc-news-england-legacy", - "provider": "BBC News a England (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/england/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 3, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "aljazeera-news-rss", - "provider": "Al Jazeera English a Top Stories (RSS)", - "endpoint": "https://www.aljazeera.com/xml/rss/all.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 3, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T17:16:47.386Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "rte-ireland-news-rss", - "provider": "RTE News - Ireland (RSS)", - "endpoint": "https://feeds.feedburner.com/ietopstories", - "kind": "rss", - "lane": "context", - "region": "europe", - "healthScore": 5, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "2026-04-27T08:39:19.161Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "channel-4-news", - "provider": "Channel 4 News", - "endpoint": "https://www.channel4.com/news/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 10, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T00:08:15.005Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T03:57:52.244Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-22T14:59:55.048Z" - }, - { - "id": "england-naturally", - "provider": "England, Naturally", - "endpoint": "https://englandnaturally.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 11, - "status": "auto-quarantined", - "reason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "quarantinedAt": "2026-04-23T03:28:47.210Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - }, - { - "id": "love-my-dress", - "provider": "Love My Dress", - "endpoint": "https://www.lovemydress.net/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 11, - "status": "auto-quarantined", - "reason": "Health score degraded to 14 after repeated failures", - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 520", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-24T08:17:25.806Z" - }, - { - "id": "the-week-uk", - "provider": "The Week UK", - "endpoint": "https://www.theweek.co.uk/feeds/all", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 13, - "status": "auto-quarantined", - "reason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T08:39:19.161Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-29T14:59:55.048Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "euiss-home", - "provider": "EU Institute for Security Studies", - "endpoint": "https://www.iss.europa.eu/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "icct-home", - "provider": "ICCT - Home", - "endpoint": "https://icct.nl/", - "kind": "html", - "lane": "context", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "breakingnews-ie", - "provider": "Breaking. News.ie", - "endpoint": "https://feeds.breakingnews.ie/bntopstories", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "independent-ie", - "provider": "Independent.ie", - "endpoint": "https://www.independent.ie/rss/", - "kind": "rss", - "lane": "context", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "eucrim-counter-terrorism-agenda", - "provider": "eucrim - Commission Counter Terrorism Agenda", - "endpoint": "https://eucrim.eu/news/commission-counter-terrorism-agenda/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "eucrim-judicial-counter-terrorism-register", - "provider": "eucrim - Judicial Counter Terrorism Register", - "endpoint": "https://eucrim.eu/news/judicial-counter-terrorism-register/", - "kind": "html", - "lane": "oversight", - "region": "eu", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "icct-perspectives-on-terrorism", - "provider": "Perspectives on Terrorism (ICCT) a Journal", - "endpoint": "https://pt.icct.nl/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "icct-publications", - "provider": "International Centre for Counter-Terrorism (ICCT) - Publications", - "endpoint": "https://icct.nl/publications", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "vox-pol-publications", - "provider": "VOX-Pol Network a Publications", - "endpoint": "https://www.voxpol.eu/publications/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "isd-global", - "provider": "Institute for Strategic Dialogue (ISD) a Articles & Reports", - "endpoint": "https://www.isdglobal.org/", - "kind": "html", - "lane": "prevention", - "region": "europe", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bbc-news-world", - "provider": "BBC News a World", - "endpoint": "https://feeds.bbci.co.uk/news/world/rss.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bbc-news-world-legacy", - "provider": "BBC News a World (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/world/rss.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "bellingcat", - "provider": "Bellingcat a Investigations", - "endpoint": "https://www.bellingcat.com/feed/", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "chathamhouse-events", - "provider": "Chatham House a Events (RSS)", - "endpoint": "https://www.chathamhouse.org/path/events.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "chathamhouse-news-releases", - "provider": "Chatham House a News Releases (RSS)", - "endpoint": "https://www.chathamhouse.org/path/news-releases.xml", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "global-initiative-news", - "provider": "Global Initiative Against Transnational Organized Crime a News", - "endpoint": "https://globalinitiative.net/news/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "tech-against-terrorism-podcast", - "provider": "Tech Against Terrorism - Podcast", - "endpoint": "https://podcast.techagainstterrorism.org/", - "kind": "html", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "war-on-the-rocks", - "provider": "War on the Rocks a National Security & CT Analysis", - "endpoint": "https://warontherocks.com/feed/", - "kind": "rss", - "lane": "context", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "tech-against-terrorism", - "provider": "Tech Against Terrorism a Blog", - "endpoint": "https://techagainstterrorism.org/", - "kind": "html", - "lane": "prevention", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "tech-against-terrorism-home", - "provider": "Tech Against Terrorism - Home", - "endpoint": "https://techagainstterrorism.org/home", - "kind": "html", - "lane": "prevention", - "region": "international", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "hope-not-hate-home", - "provider": "Hope not hate podcast", - "endpoint": "https://feeds.buzzsprout.com/170425.rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "rusi-publications", - "provider": "RUSI (Royal United Services Institute) a Publications", - "endpoint": "https://www.rusi.org/publications", - "kind": "html", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "birmingham-mail", - "provider": "Birmingham Mail", - "endpoint": "https://www.birminghammail.co.uk/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "breaking-news-today", - "provider": "Breaking News Today", - "endpoint": "https://www.breakingnewstoday.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "consett-magazine", - "provider": "Consett Magazine", - "endpoint": "https://consettmagazine.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "daily-echo", - "provider": "Daily Echo", - "endpoint": "https://www.dailyecho.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "daily-express", - "provider": "Daily Express", - "endpoint": "https://feeds.feedburner.com/daily-express-news-showbiz", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "daily-mirror", - "provider": "Daily Mirror", - "endpoint": "https://www.mirror.co.uk/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "glasgow-times", - "provider": "Glasgow Times", - "endpoint": "https://www.glasgowtimes.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "grimsby-telegraph", - "provider": "Grimsby Telegraph", - "endpoint": "https://www.grimsbytelegraph.co.uk/news/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "herald-scotland-news", - "provider": "Herald Scotland - News", - "endpoint": "https://www.heraldscotland.com/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "huffpost-uk", - "provider": "Huff. Post UK", - "endpoint": "https://www.huffingtonpost.co.uk/feeds/index.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "larne-times", - "provider": "Larne Times", - "endpoint": "https://www.larnetimes.co.uk/news/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "manchester-evening-news", - "provider": "Manchester Evening News", - "endpoint": "https://www.manchestereveningnews.co.uk/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "news-uk", - "provider": "News UK", - "endpoint": "https://www.news.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "politics-co-uk", - "provider": "Politics.co.uk", - "endpoint": "https://www.politics.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "positive-news", - "provider": "Positive News", - "endpoint": "https://www.positive.news/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "scottish-field", - "provider": "Scottish Field", - "endpoint": "https://www.scottishfield.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-argus-news", - "provider": "The Argus", - "endpoint": "https://www.theargus.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-bolton-news", - "provider": "The Bolton News - News", - "endpoint": "https://www.theboltonnews.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "daily-record", - "provider": "Daily Record", - "endpoint": "https://www.dailyrecord.co.uk/news/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "northern-echo-news", - "provider": "The Northern Echo - News", - "endpoint": "https://www.thenorthernecho.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-poke", - "provider": "The Poke", - "endpoint": "https://www.thepoke.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "scarborough-news", - "provider": "The Scarborough News", - "endpoint": "https://www.thescarboroughnews.co.uk/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-scotsman-news", - "provider": "The Scotsman - News", - "endpoint": "https://www.scotsman.com/news/rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-york-press-news", - "provider": "The York Press - News", - "endpoint": "https://www.yorkpress.co.uk/news/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "wales-online", - "provider": "Wales. Online", - "endpoint": "https://www.walesonline.co.uk/?service=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "a-luxury-travel-blog", - "provider": "A Luxury Travel Blog", - "endpoint": "https://www.aluxurytravelblog.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "age-uk-discover", - "provider": "Age UK", - "endpoint": "https://www.ageuk.org.uk/discover/rss/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "alan-malcher", - "provider": "Alan Malcher", - "endpoint": "https://alanmalcher.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "britishbeautyblogger", - "provider": "British Beauty Blogger", - "endpoint": "https://britishbeautyblogger.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "buy-firewood-direct", - "provider": "Buy Firewood Direct", - "endpoint": "https://www.buyfirewooddirect.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "carly-rowena", - "provider": "Carly Rowena", - "endpoint": "https://feeds.feedburner.com/Carly. Rowena. Official", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "cherished-holiday-homes", - "provider": "Cherished Holiday Homes", - "endpoint": "https://cherishedholidayhomes.co.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "chique-home-living", - "provider": "Chique Home Living", - "endpoint": "https://chiquehomeliving.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "clubwise-blog", - "provider": "Club. Wise Blog", - "endpoint": "https://www.clubwise.com/clubwise-blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "disneyrollergirl", - "provider": "Disneyrollergirl", - "endpoint": "https://www.disneyrollergirl.net/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "fresh-design-blog", - "provider": "Fresh Design Blog", - "endpoint": "https://feeds2.feedburner.com/Fresh. Design. Blog", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "jollydeck", - "provider": "Jolly. Deck", - "endpoint": "https://www.jollydeck.com/resources/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "lifestylelinked", - "provider": "Life. Style. Linked", - "endpoint": "https://lifestylelinked.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "london-review-of-books", - "provider": "London Review of Books", - "endpoint": "https://www.lrb.co.uk/blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "marie-claire-uk", - "provider": "Marie Claire UK", - "endpoint": "https://www.marieclaire.co.uk/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "office-breaks", - "provider": "Office Breaks", - "endpoint": "https://office-breaks.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "on-the-think-of", - "provider": "On The Think Of", - "endpoint": "https://onthethinkof.home.blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "rocknroll-bride", - "provider": "Rock n Roll Bride", - "endpoint": "https://www.rocknrollbride.com/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "silverspoon-london", - "provider": "Silver. Spoon London", - "endpoint": "https://www.silverspoonlondon.co.uk/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "hnd-assignment-help-uk-medium", - "provider": "Stories by HND Assignment Help UK", - "endpoint": "https://medium.com/feed/@hndassigenmenthelp", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "tenura", - "provider": "Tenura", - "endpoint": "https://www.tenura.co.uk/rss.xml", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-curry-guy", - "provider": "The Curry Guy", - "endpoint": "https://greatcurryrecipes.net/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "real-talk-uk", - "provider": "The Real Talk UK", - "endpoint": "https://charleyjai-realtalk.blogspot.com/feeds/posts/default?alt=rss", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "the-stratfordian", - "provider": "The Stratfordian", - "endpoint": "https://thestratfordian.co.uk/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "training-express", - "provider": "Training Express", - "endpoint": "https://www.trainingexpress.org.uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "uk-constitutional-law-association", - "provider": "UK Constitutional Law Association", - "endpoint": "https://ukconstitutionallaw.org/blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "uk-fundraising-blog", - "provider": "UK Fundraising", - "endpoint": "https://fundraising.co.uk/category/blog/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "uk-human-rights-blog", - "provider": "UK Human Rights Blog", - "endpoint": "https://ukhumanrightsblog.com/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "vershd", - "provider": "Vershd", - "endpoint": "https://vershd.io/feed", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "vuelio-uk", - "provider": "Vuelio", - "endpoint": "https://www.vuelio.com/uk/feed/", - "kind": "rss", - "lane": "context", - "region": "uk", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "ctc-sentinel", - "provider": "Combating Terrorism Center at West Point - CTC Sentinel", - "endpoint": "https://ctc.westpoint.edu/ctc-sentinel/", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "gw-program-extremism", - "provider": "George Washington University - Program on Extremism", - "endpoint": "https://extremism.gwu.edu/news", - "kind": "html", - "lane": "context", - "region": "us", - "healthScore": 17, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "", - "lastFailureAt": "", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "telegraph-world-news", - "provider": "The Telegraph a World News", - "endpoint": "https://www.telegraph.co.uk/world-news/", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 23, - "status": "auto-quarantined", - "reason": "Low health score – needs review", - "quarantinedAt": "", - "lastErrorCategory": "", - "lastErrorMessage": "", - "consecutiveFailures": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [], - "replacementSuggestion": "", - "reviewBy": "2026-04-26T14:11:10.963Z", - "lastFailureAt": "2026-04-19T14:11:10.963Z", - "lastCheckedAt": "2026-04-24T06:01:25.327Z" - }, - { - "id": "euronews-europe", - "provider": "Euronews a Europe", - "endpoint": "https://www.euronews.com/news/europe", - "kind": "html", - "lane": "context", - "region": "europe", - "healthScore": 24, - "status": "auto-quarantined", - "reason": "Health score degraded to 24 after repeated failures", - "quarantinedAt": "2026-04-23T03:28:47.210Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 406", - "consecutiveFailures": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 406", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "replacementSuggestion": "", - "reviewBy": "2026-04-30T03:28:47.210Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastCheckedAt": "2026-04-23T03:28:47.210Z" - } - ] + "sources": [] } diff --git a/data/source-remediation-sweep.json b/data/source-remediation-sweep.json index d408b774..45afe05c 100644 --- a/data/source-remediation-sweep.json +++ b/data/source-remediation-sweep.json @@ -1,120 +1,11 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T08:17:25.806Z", - "totalSourceErrors": 3, - "byCategory": { - "moved-temporarily": 2, - "timeout": 1 - }, - "byKind": { - "html": 3 - }, + "generatedAt": "2026-04-24T15:44:02.370Z", + "totalSourceErrors": 0, + "byCategory": {}, + "byKind": {}, "machineReadableErrorCount": 0, - "htmlErrorCount": 3, - "top20": [ - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "finalUrl": "", - "category": "timeout", - "statusKind": "", - "message": "This operation was aborted", - "status": 0, - "rankScore": 1, - "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", - "replacementCandidate": "", - "sourceKind": "html", - "sourceLane": "oversight", - "sourceRegion": "", - "isMachineReadable": false - } - ], - "sources": [ - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "finalUrl": "", - "category": "timeout", - "statusKind": "", - "message": "This operation was aborted", - "status": 0, - "rankScore": 1, - "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", - "replacementCandidate": "", - "sourceKind": "html", - "sourceLane": "oversight", - "sourceRegion": "", - "isMachineReadable": false - } - ] + "htmlErrorCount": 0, + "top20": [], + "sources": [] } diff --git a/data/top-20-source-remediation.json b/data/top-20-source-remediation.json index 7358ed1a..d7d31c69 100644 --- a/data/top-20-source-remediation.json +++ b/data/top-20-source-remediation.json @@ -1,58 +1,6 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T08:17:25.806Z", - "totalSourceErrors": 3, - "top20": [ - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "category": "moved-temporarily", - "statusKind": "", - "message": "HTTP 503", - "status": 503, - "rankScore": 4, - "suggestedAction": "update source endpoint to redirected final URL", - "replacementCandidate": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "sourceKind": "html", - "sourceLane": "context", - "sourceRegion": "", - "isMachineReadable": false - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "finalUrl": "", - "category": "timeout", - "statusKind": "", - "message": "This operation was aborted", - "status": 0, - "rankScore": 1, - "suggestedAction": "retry later and monitor domain circuit-breaker/failure trend", - "replacementCandidate": "", - "sourceKind": "html", - "sourceLane": "oversight", - "sourceRegion": "", - "isMachineReadable": false - } - ] + "generatedAt": "2026-04-24T15:44:02.370Z", + "totalSourceErrors": 0, + "top20": [] } diff --git a/live-alerts.json b/live-alerts.json index d9e74c19..9241227c 100644 --- a/live-alerts.json +++ b/live-alerts.json @@ -1,7 +1,7 @@ { - "generatedAt": "2026-04-24T08:17:25.806Z", - "sourceCount": 176, - "alertCount": 179, + "generatedAt": "2026-04-24T15:44:02.370Z", + "sourceCount": 4, + "alertCount": 165, "alerts": [ { "id": "met-police-latest-news-0", @@ -4128,57 +4128,6 @@ "corroborationCount": 1, "isDuplicateOf": "fusion-20ff901f294fcf70" }, - { - "id": "sky-news-uk-rss-0", - "fusedIncidentId": "fusion-ff4b64f9e0b6e709", - "title": "Police Probe Into Attack On Former Jewish Charity Premises", - "location": "United Kingdom", - "region": "uk", - "lane": "context", - "severity": "moderate", - "status": "Update", - "actor": "Sky News UK a Top Stories (RSS)", - "subject": "Sky News UK a Top Stories (RSS)", - "happenedWhen": "18 Apr 2026, 11:06", - "confidence": "Research or analytical source", - "confidenceScore": 0.7, - "summary": "Counter terrorism police are leading an investigation into an arson attack on building that used to belong to a Jewish charity.", - "aiSummary": "Sky News UK a Top Stories (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Counter terrorism police are leading an investigation into an arson attack on building that used to belong to a Jewish charity.", - "peopleInvolved": [], - "source": "Sky News UK a Top Stories (RSS)", - "sourceUrl": "https://news.sky.com/story/counter-terror-police-lead-investigation-into-arson-attack-on-business-in-london-13533250", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "18 Apr 2026, 11:06", - "lat": 54.5, - "lng": -2.5, - "major": false, - "publishedAt": "2026-04-18T10:06:00.000Z", - "keywordHits": [ - "terrorism", - "attack" - ], - "terrorismHits": [ - "terrorism", - "counter terrorism" - ], - "eventType": "context_update", - "geoPrecision": "country", - "isOfficial": false, - "priorityScore": 4.4, - "freshnessBucket": 3, - "freshUntil": "2026-04-22T10:06:00.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null - }, { "id": "telegraph-world-news-0", "fusedIncidentId": "fusion-7916cf1e448328fd", @@ -4239,67 +4188,6 @@ "corroborationCount": 1, "isDuplicateOf": "fusion-7916cf1e448328fd" }, - { - "id": "euronews-europe-1", - "fusedIncidentId": "fusion-54ff63dbb205f190", - "title": "Rights Groups In Sweden Slam Government 'Honest Living' Proposal For Migrants", - "location": "Sweden", - "region": "europe", - "lane": "context", - "severity": "moderate", - "status": "Update", - "actor": "Euronews a Europe", - "subject": "Euronews a Europe", - "happenedWhen": "17 Apr 2026, 11:36", - "confidence": "Research or analytical source", - "confidenceScore": 0.7, - "summary": "Sweden's government has faced growing criticism over its plans to require migrants to adhere to \"honest living,\" with rights groups and legal experts saying the proposed measure is discriminatory. Sweden's government, which came to power in 2022 on pledges to ", - "aiSummary": "Euronews a Europe has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Sweden's government has faced growing criticism over its plans to require migrants to adhere to \"honest living,\" with rights groups and legal experts saying the proposed measure is discriminatory. Sweden's government, which came to power in 2022 on pledges to get tough on immigration and crime, is trying to rapidly push through a slew of reforms ahead of legislative elections in September. If approved by parliament, the \"honest living\" measure would come into force on 13 July. Under the proposed change, the Migration Agency will consider, when granting or renewing non-EU citizens' residence permits, whether applicants have at any time posed a threat to public order or security, had extremist sympathies or links to groups advocating violence, or committed minor offences punishable by fines. Other factors may include going into debt \"without any intention or effort to repay,\" organised begging, committing welfare fraud or working off the books. Those found not adhering to the \"honest living\" standard could face deportation. \"The consequences will be very serious\" for migrants affected by the reform, John Stauffer, a legal adviser for the human rights organisation Civil Rights Defenders, told the AFP news agency. Even a person's statements, although they in themselves should not be considered as proof of a lack of \"honest living,\" may indicate links to \"violent extremism,\" Ludvig Aspling, a spokesman for the anti-immigration Sweden Democrats which props up the minority right-wing government, said when the plans were announced. \"This creates a system where people, depending on their legal status and whether they are citizens or have residence permits, have different rights in our society, especially when it comes to freedom of expression,\" Stauffer said. \"If you are a citiz", - "peopleInvolved": [], - "source": "Euronews a Europe", - "sourceUrl": "https://www.euronews.com/my-europe/2026/04/17/rights-groups-in-sweden-slam-government-honest-living-proposal-for-migrants", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "17 Apr 2026, 11:36", - "lat": 60.1282, - "lng": 18.6435, - "major": false, - "publishedAt": "2026-04-17T10:36:02.000Z", - "keywordHits": [ - "extremist", - "threat" - ], - "terrorismHits": [ - "extremist", - "extremism" - ], - "eventType": "context_update", - "geoPrecision": "region", - "isOfficial": false, - "priorityScore": 4.4, - "freshnessBucket": 3, - "freshUntil": "2026-04-21T10:36:02.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-54ff63dbb205f190", - "source": "Euronews a Europe", - "sourceUrl": "https://www.euronews.com/my-europe/2026/04/17/rights-groups-in-sweden-slam-government-honest-living-proposal-for-migrants", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-17T10:36:02.000Z", - "confidence": "Research or analytical source" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-54ff63dbb205f190" - }, { "id": "euronews-europe-0", "fusedIncidentId": "fusion-3a006df5d74617e3", @@ -4581,534 +4469,424 @@ "isDuplicateOf": "fusion-9bb9a00ec93b22fe" }, { - "id": "uk-ncsc-news-4", - "fusedIncidentId": "fusion-dc71ed4dd376679b", - "title": "International Cyber Agencies Share Fresh Advice To Defend Against China-Linked Covert Networks", - "location": "China", + "id": "protectuk-1", + "fusedIncidentId": "fusion-1385f8fb52e1752f", + "title": "NaCTSO Is Exhibiting At The Food And Drink Expo, NEC Birmingham | ProtectUK", + "location": "Birmingham, UK", "region": "uk", - "lane": "oversight", + "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "23 Apr 2026, 13:00", + "actor": "ProtectUK (NPSA) a Protective Security Guidance", + "subject": "ProtectUK (NPSA) a Protective Security Guidance", + "happenedWhen": "09 Apr 2026, 13:00", "confidence": "Verified official source update", "confidenceScore": 0.84, - "summary": "New advisory highlights how to defend against attacker tactics believed to be used by China-linked actors to hide malicious cyber activity.", - "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "New advisory highlights how to defend against attacker tactics believed to be used by China-linked actors to hide malicious cyber activity.", + "summary": "Come and meet NaCTSO’s Business Engagement Unit at stand N149 and learn how they are equipping organisations just like yours with the knowledge and tools to protect your business and your customers. You can find further information on what to expect from our s", + "aiSummary": "ProtectUK (NPSA) a Protective Security Guidance has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "Come and meet NaCTSO’s Business Engagement Unit at stand N149 and learn how they are equipping organisations just like yours with the knowledge and tools to protect your business and your customers. You can find further information on what to expect from our stand via the Exhibitors 2026 webpage. We hope to see you there. NaCTSO will feature in a panel discussion alongside Superintendent Maslen and Andrew Goodacre, CEO of the British Independent Retailers Association. The panel will discuss safety and security challenges in the retail sector and will highlight good practice for managing these issues including latest advice, guidance and reporting mechanisms. If you would like to attend, please register at The UK Food & Drink Shows 2026 Registration webpage.", "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/international-cyber-agencies-fresh-advice-defend-against-china-linked-covert-networks", + "source": "ProtectUK (NPSA) a Protective Security Guidance", + "sourceUrl": "https://www.protectuk.police.uk/news-views/nactso-exhibiting-food-and-drink-expo-nec-birmingham", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "23 Apr 2026, 13:00", - "lat": 35.8617, - "lng": 104.1954, + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "queueBucket": "prevention", + "time": "09 Apr 2026, 13:00", + "lat": 52.4862, + "lng": -1.8904, "major": false, - "publishedAt": "2026-04-23T12:00:00.000Z", + "publishedAt": "2026-04-09T12:00:00.000Z", "keywordHits": [], "terrorismHits": [], - "eventType": "oversight_update", + "eventType": "prevention_update", "geoPrecision": "region", "isOfficial": true, "priorityScore": 4.1, "freshnessBucket": 3, - "freshUntil": "2026-05-01T12:00:00.000Z", + "freshUntil": "2026-04-17T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-dc71ed4dd376679b", - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/international-cyber-agencies-fresh-advice-defend-against-china-linked-covert-networks", + "fusedIncidentId": "fusion-1385f8fb52e1752f", + "source": "ProtectUK (NPSA) a Protective Security Guidance", + "sourceUrl": "https://www.protectuk.police.uk/news-views/nactso-exhibiting-food-and-drink-expo-nec-birmingham", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-04-23T12:00:00.000Z", + "publishedAt": "2026-04-09T12:00:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-dc71ed4dd376679b" + "isDuplicateOf": "fusion-1385f8fb52e1752f" }, { - "id": "uk-ncsc-news-2", - "fusedIncidentId": "fusion-59e5a140cc438a1b", - "title": "Defending Against China-Nexus Covert Networks Of Compromised Devices", - "location": "China", + "id": "protectuk-1", + "fusedIncidentId": "fusion-fb955c89b4e34646", + "title": "NaCTSO Is Exhibiting At The Food And Drink Expo, NEC Birmingham, From 13th-15th April 2026 | ProtectUK", + "location": "Birmingham, UK", "region": "uk", - "lane": "oversight", + "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "23 Apr 2026, 13:00", + "actor": "ProtectUK (NPSA) a Protective Security Guidance", + "subject": "ProtectUK (NPSA) a Protective Security Guidance", + "happenedWhen": "09 Apr 2026, 13:00", "confidence": "Verified official source update", "confidenceScore": 0.84, - "summary": "Explaining the widespread shift in tactics, techniques and procedures (TTPs) towards networks of compromised infrastructure, and how to defend against it", - "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "Explaining the widespread shift in tactics, techniques and procedures (TTPs) towards networks of compromised infrastructure, and how to defend against it", + "summary": "NaCTSO is exhibiting at the Food and Drink Expo, NEC Birmingham, from 13 - 15 April 2026. Come and meet NaCTSO’s Business Engagement Unit at stand N147 and learn how they are equipping organisations just like yours with the knowledge and tools to protect your ", + "aiSummary": "ProtectUK (NPSA) a Protective Security Guidance has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "NaCTSO is exhibiting at the Food and Drink Expo, NEC Birmingham, from 13 - 15 April 2026. Come and meet NaCTSO’s Business Engagement Unit at stand N147 and learn how they are equipping organisations just like yours with the knowledge and tools to protect your business and your customers. You can find further information on what to expect from our stand via the Exhibitors 2026 webpage. We hope to see you there. NaCTSO is taking part in a panel discussion alongside Superintendent Maslen and Andrew Goodacre, CEO of the British Independent Retailers Association. The panel will discuss safety and security challenges in the retail sector and will highlight good practice for managing these issues including latest advice, guidance and reporting mechanisms. If you would like to attend, please register at The UK Food & Drink Shows 2026 Registration webpage.", "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/defending-against-china-nexus-covert-networks-of-compromised-devices", + "source": "ProtectUK (NPSA) a Protective Security Guidance", + "sourceUrl": "https://www.protectuk.police.uk/news-views/nactso-exhibiting-food-and-drink-expo-nec-birmingham-13th-15th-april-2026", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "23 Apr 2026, 13:00", - "lat": 35.8617, - "lng": 104.1954, + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "queueBucket": "prevention", + "time": "09 Apr 2026, 13:00", + "lat": 52.4862, + "lng": -1.8904, "major": false, - "publishedAt": "2026-04-23T12:00:00.000Z", + "publishedAt": "2026-04-09T12:00:00.000Z", "keywordHits": [], "terrorismHits": [], - "eventType": "oversight_update", + "eventType": "prevention_update", "geoPrecision": "region", "isOfficial": true, "priorityScore": 4.1, "freshnessBucket": 3, - "freshUntil": "2026-05-01T12:00:00.000Z", + "freshUntil": "2026-04-17T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-59e5a140cc438a1b", - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/defending-against-china-nexus-covert-networks-of-compromised-devices", + "fusedIncidentId": "fusion-fb955c89b4e34646", + "source": "ProtectUK (NPSA) a Protective Security Guidance", + "sourceUrl": "https://www.protectuk.police.uk/news-views/nactso-exhibiting-food-and-drink-expo-nec-birmingham-13th-15th-april-2026", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-04-23T12:00:00.000Z", + "publishedAt": "2026-04-09T12:00:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-59e5a140cc438a1b" + "isDuplicateOf": "fusion-fb955c89b4e34646" }, { - "id": "uk-ncsc-news-3", - "fusedIncidentId": "fusion-4e6cbc2c1c44341e", - "title": "NCSC: Leave Passwords In The Past - Passkeys Are The Future", + "id": "belfast-live-0", + "fusedIncidentId": "fusion-e1b4d9a62c587fb2", + "title": "Arlene Foster Tells Peers She Received Online Abuse About Father’S Shooting", "location": "United Kingdom", "region": "uk", - "lane": "oversight", + "lane": "context", "severity": "moderate", "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "23 Apr 2026, 13:00", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "Passkeys are the more secure and user-friendly login method and should be the default authentication option for consumers.", - "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "Passkeys are the more secure and user-friendly login method and should be the default authentication option for consumers.", + "actor": "Belfast Live", + "subject": "Belfast Live", + "happenedWhen": "16 Apr 2026, 20:58", + "confidence": "Secondary source signal", + "confidenceScore": 0.62, + "summary": "Lady Foster said: “There’s a definite need to deal with the issue of glorification of terrorism...\"", + "aiSummary": "Belfast Live has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "Lady Foster said: “There’s a definite need to deal with the issue of glorification of terrorism...\"", "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/ncsc-leave-passwords-in-the-past-passkeys-are-the-future", + "source": "Belfast Live", + "sourceUrl": "https://www.belfastlive.co.uk/news/northern-ireland/arlene-foster-tells-peers-received-33786021", "sourceTier": "context", - "reliabilityProfile": "official_context", + "reliabilityProfile": "general_media", "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "23 Apr 2026, 13:00", + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueBucket": "context", + "time": "16 Apr 2026, 20:58", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-04-23T12:00:00.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "oversight_update", + "publishedAt": "2026-04-16T19:58:35.000Z", + "keywordHits": [ + "terrorism", + "shooting" + ], + "terrorismHits": [ + "terrorism" + ], + "eventType": "context_update", "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 4.1, + "isOfficial": false, + "priorityScore": 4.05, "freshnessBucket": 3, - "freshUntil": "2026-05-01T12:00:00.000Z", + "freshUntil": "2026-04-20T19:58:35.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-4e6cbc2c1c44341e", - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/ncsc-leave-passwords-in-the-past-passkeys-are-the-future", + "fusedIncidentId": "fusion-e1b4d9a62c587fb2", + "source": "Belfast Live", + "sourceUrl": "https://www.belfastlive.co.uk/news/northern-ireland/arlene-foster-tells-peers-received-33786021", "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-04-23T12:00:00.000Z", - "confidence": "Verified official source update" + "reliabilityProfile": "general_media", + "publishedAt": "2026-04-16T19:58:35.000Z", + "confidence": "Secondary source signal" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-4e6cbc2c1c44341e" + "isDuplicateOf": "fusion-e1b4d9a62c587fb2" }, { - "id": "uk-ncsc-news-1", - "fusedIncidentId": "fusion-2163d5c480e852e5", - "title": "Supporting AI Adoption For UK Cyber Defence", - "location": "United Kingdom", - "region": "uk", - "lane": "oversight", - "severity": "moderate", - "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "23 Apr 2026, 13:00", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "Adopting AI will require time, the development of new capabilities and careful oversight.", - "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "Adopting AI will require time, the development of new capabilities and careful oversight.", + "id": "telegraph-world-news-0", + "fusedIncidentId": "fusion-ed5670f837bf5584", + "title": "Lebanon Says Killing Of Journalist Amal Khalil Was An Israeli War Crime", + "location": "Jerusalem", + "region": "europe", + "lane": "context", + "severity": "moderate", + "status": "Update", + "actor": "The Telegraph a World News", + "subject": "The Telegraph a World News", + "happenedWhen": "23 Apr 2026, 16:47", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "IDF accused of dropping grenade from drone to prevent rescuers from reaching dying reporter Amal Khalil Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based in Israel", + "aiSummary": "The Telegraph a World News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "IDF accused of dropping grenade from drone to prevent rescuers from reaching dying reporter Amal Khalil Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based in Israel. He has reported on the Israel-Hamas war, terrorism, Israeli politics, life in the Palestinian territories and Middle East relations. He previously worked as a Senior Reporter, a Health Correspondent, and a News Reporter for The Telegraph.", "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/blogs/supporting-ai-adoption-for-uk-cyber-defence", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "source": "The Telegraph a World News", + "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/23/lebanon-says-killing-of-journalist-was-israeli-war-crime/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "23 Apr 2026, 13:00", - "lat": 54.5, - "lng": -2.5, + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueBucket": "context", + "time": "23 Apr 2026, 16:47", + "lat": 31.7683, + "lng": 35.2137, "major": false, - "publishedAt": "2026-04-23T12:00:00.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "oversight_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 4.1, + "publishedAt": "2026-04-23T15:47:00.000Z", + "keywordHits": [ + "terrorism" + ], + "terrorismHits": [ + "terrorism" + ], + "eventType": "context_update", + "geoPrecision": "city", + "isOfficial": false, + "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-05-01T12:00:00.000Z", + "freshUntil": "2026-04-27T15:47:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-2163d5c480e852e5", - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/blogs/supporting-ai-adoption-for-uk-cyber-defence", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-04-23T12:00:00.000Z", - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-2163d5c480e852e5" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "uk-ncsc-news-1", - "fusedIncidentId": "fusion-9908f067ac3ed047", - "title": "Defending Against China-Nexus Covert Networks Of Compromised Devices", - "location": "China", - "region": "uk", - "lane": "oversight", + "id": "aljazeera-news-rss-0", + "fusedIncidentId": "fusion-9ef52f3d4fa0c4f2", + "title": "Gaza’S Second Front: The Battle Against Disease-Carrying Rats", + "location": "Palestine", + "region": "international", + "lane": "context", "severity": "moderate", "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "23 Apr 2026, 13:00", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "Explaining the widespread shift in tactics, techniques and procedures (TTPs) towards networks of compromised infrastructure, and how to defend against it", - "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "Explaining the widespread shift in tactics, techniques and procedures (TTPs) towards networks of compromised infrastructure, and how to defend against it", + "actor": "Al Jazeera English a Top Stories (RSS)", + "subject": "Al Jazeera English a Top Stories (RSS)", + "happenedWhen": "23 Apr 2026, 10:07", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "Palestinian families in Gaza endure daily terror from rats in unsanitary camps, but help is hard to come by.", + "aiSummary": "Al Jazeera English a Top Stories (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "Palestinian families in Gaza endure daily terror from rats in unsanitary camps, but help is hard to come by.", "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/defending-against-china-nexus-covert-networks-of-compromised-devices", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "source": "Al Jazeera English a Top Stories (RSS)", + "sourceUrl": "https://www.aljazeera.com/features/2026/4/23/gazas-second-front-the-battle-against-disease-carrying-rats?traffic_source=rss", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "23 Apr 2026, 13:00", - "lat": 35.8617, - "lng": 104.1954, + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueBucket": "context", + "time": "23 Apr 2026, 10:07", + "lat": 31.9522, + "lng": 35.2332, "major": false, - "publishedAt": "2026-04-23T12:00:00.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "oversight_update", + "publishedAt": "2026-04-23T09:07:31.000Z", + "keywordHits": [ + "terror" + ], + "terrorismHits": [ + "terror" + ], + "eventType": "context_update", "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 4.1, + "isOfficial": false, + "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-05-01T12:00:00.000Z", + "freshUntil": "2026-04-27T09:07:31.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-9908f067ac3ed047", - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/defending-against-china-nexus-covert-networks-of-compromised-devices", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-04-23T12:00:00.000Z", - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-9908f067ac3ed047" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "uk-ncsc-news-2", - "fusedIncidentId": "fusion-cf1f4d283a0caa5e", - "title": "NCSC: Leave Passwords In The Past - Passkeys Are The Future", - "location": "United Kingdom", - "region": "uk", - "lane": "oversight", + "id": "rte-ireland-news-rss-0", + "fusedIncidentId": "fusion-27b73e7a334b0d33", + "title": "Ireland Faces Evolving Terror Threats Including Islamist And Far-Right Risks, Report Finds", + "location": "Ireland", + "region": "europe", + "lane": "context", "severity": "moderate", "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "23 Apr 2026, 13:00", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "Passkeys are the more secure and user-friendly login method and should be the default authentication option for consumers.", - "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "Passkeys are the more secure and user-friendly login method and should be the default authentication option for consumers.", + "actor": "RTE News - Ireland (RSS)", + "subject": "RTE News - Ireland (RSS)", + "happenedWhen": "23 Apr 2026, 06:50", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "Oversight judge warns of evolving terror risks and calls for modernised surveillance laws with stronger safeguards for civil liberties", + "aiSummary": "RTE News - Ireland (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "Oversight judge warns of evolving terror risks and calls for modernised surveillance laws with stronger safeguards for civil liberties", "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/ncsc-leave-passwords-in-the-past-passkeys-are-the-future", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "source": "RTE News - Ireland (RSS)", + "sourceUrl": "https://www.irishexaminer.com/news/arid-41831747.html", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "23 Apr 2026, 13:00", - "lat": 54.5, - "lng": -2.5, + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueBucket": "context", + "time": "23 Apr 2026, 06:50", + "lat": 53.1424, + "lng": -7.6921, "major": false, - "publishedAt": "2026-04-23T12:00:00.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "oversight_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 4.1, + "publishedAt": "2026-04-23T05:50:00.000Z", + "keywordHits": [ + "terror" + ], + "terrorismHits": [ + "terror" + ], + "eventType": "context_update", + "geoPrecision": "region", + "isOfficial": false, + "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-05-01T12:00:00.000Z", + "freshUntil": "2026-04-27T05:50:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-cf1f4d283a0caa5e", - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/ncsc-leave-passwords-in-the-past-passkeys-are-the-future", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-04-23T12:00:00.000Z", - "confidence": "Verified official source update" + "fusedIncidentId": "fusion-27b73e7a334b0d33", + "source": "RTE News - Ireland (RSS)", + "sourceUrl": "https://www.irishexaminer.com/news/arid-41831747.html", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "publishedAt": "2026-04-23T05:50:00.000Z", + "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-cf1f4d283a0caa5e" + "isDuplicateOf": "fusion-27b73e7a334b0d33" }, { - "id": "uk-ncsc-news-3", - "fusedIncidentId": "fusion-773b31dc72eb259a", - "title": "International Cyber Agencies Share Fresh Advice To Defend Against China-Linked Covert Networks", - "location": "China", - "region": "uk", - "lane": "oversight", + "id": "euronews-europe-0", + "fusedIncidentId": "fusion-97cd05f1987905f1", + "title": "GáSpáR OrbáN, Son Of Hungary'S Outgoing Prime Minister, Discharged From Military", + "location": "Hungary", + "region": "europe", + "lane": "context", "severity": "moderate", "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "23 Apr 2026, 13:00", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "New advisory highlights how to defend against attacker tactics believed to be used by China-linked actors to hide malicious cyber activity.", - "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "New advisory highlights how to defend against attacker tactics believed to be used by China-linked actors to hide malicious cyber activity.", + "actor": "Euronews a Europe", + "subject": "Euronews a Europe", + "happenedWhen": "22 Apr 2026, 19:01", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "According to Kontroll, the son of the outgoing Prime Minister, Gáspár Orbán, the son of Hungary's outgoing Prime Minister Viktor Orbán has been discharged from the Hungarian Defence Forces, local media report. Sources at 444.hu confirmed that Orbán, who held t", + "aiSummary": "Euronews a Europe has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "According to Kontroll, the son of the outgoing Prime Minister, Gáspár Orbán, the son of Hungary's outgoing Prime Minister Viktor Orbán has been discharged from the Hungarian Defence Forces, local media report. Sources at 444.hu confirmed that Orbán, who held the rank of captain, submitted his demobilsation request before the parliamentary elections on 12 April which saw his father's Fidesz party trounced by the opposition in a landslide. Gáspár Orbán was born in 1992 studied law and first became a footballer, playing as a midfielder for Videoton FC Fehérvár and Puskás Akadémia FC before founding a charismatic Christian youth movement called Felház. He was sworn into the Hungarian Defence Forces after taking his oath in 2019 and in 2020 was sent on a nine-month training course at the elite Royal Military Academy Sandhurst in the UK. His Hungarian peer on that course, Captain Szilveszter Pálinkás, told the telex news site that he had been called by the Chief of General Staff and told, \"I have to feed him, water him, make sure he completes this academy, because if he doesn't, we'll lose our jobs.\" A Hungarian military mission to Chad, with the aim of stemming migrant flows to Europe, was reportedly devised by Orbán who allegedly told a colleague at Sandhurst that he had a “divine inspiration” to help African Christians. In 2024, Hungary announced it was sending around 200 troops to Chad to provide training and support counter-terrorism operations. That mission raised eyebrows in Hungary, partly because the country had no substantive relations with Chad before and the promised of $200 million (€170 million) in aid was an deemed excessive pledge from one of Europe’s poorer countries. Captain Pálinkás said that the military mission to Chad had been planned by Gáspár Orbán, th", "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/international-cyber-agencies-fresh-advice-defend-against-china-linked-covert-networks", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "source": "Euronews a Europe", + "sourceUrl": "https://www.euronews.com/my-europe/2026/04/22/gaspar-orban-son-of-hungarys-outgoing-prime-minister-discharged-from-military", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "23 Apr 2026, 13:00", - "lat": 35.8617, - "lng": 104.1954, + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueBucket": "context", + "time": "22 Apr 2026, 19:01", + "lat": 47.1625, + "lng": 19.5033, "major": false, - "publishedAt": "2026-04-23T12:00:00.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "oversight_update", - "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 4.1, - "freshnessBucket": 3, - "freshUntil": "2026-05-01T12:00:00.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-773b31dc72eb259a", - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/international-cyber-agencies-fresh-advice-defend-against-china-linked-covert-networks", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-04-23T12:00:00.000Z", - "confidence": "Verified official source update" - } + "publishedAt": "2026-04-22T18:01:02.000Z", + "keywordHits": [ + "terrorism" ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-773b31dc72eb259a" - }, - { - "id": "protectuk-1", - "fusedIncidentId": "fusion-1385f8fb52e1752f", - "title": "NaCTSO Is Exhibiting At The Food And Drink Expo, NEC Birmingham | ProtectUK", - "location": "Birmingham, UK", - "region": "uk", - "lane": "prevention", - "severity": "moderate", - "status": "Update", - "actor": "ProtectUK (NPSA) a Protective Security Guidance", - "subject": "ProtectUK (NPSA) a Protective Security Guidance", - "happenedWhen": "09 Apr 2026, 13:00", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "Come and meet NaCTSO’s Business Engagement Unit at stand N149 and learn how they are equipping organisations just like yours with the knowledge and tools to protect your business and your customers. You can find further information on what to expect from our s", - "aiSummary": "ProtectUK (NPSA) a Protective Security Guidance has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "Come and meet NaCTSO’s Business Engagement Unit at stand N149 and learn how they are equipping organisations just like yours with the knowledge and tools to protect your business and your customers. You can find further information on what to expect from our stand via the Exhibitors 2026 webpage. We hope to see you there. NaCTSO will feature in a panel discussion alongside Superintendent Maslen and Andrew Goodacre, CEO of the British Independent Retailers Association. The panel will discuss safety and security challenges in the retail sector and will highlight good practice for managing these issues including latest advice, guidance and reporting mechanisms. If you would like to attend, please register at The UK Food & Drink Shows 2026 Registration webpage.", - "peopleInvolved": [], - "source": "ProtectUK (NPSA) a Protective Security Guidance", - "sourceUrl": "https://www.protectuk.police.uk/news-views/nactso-exhibiting-food-and-drink-expo-nec-birmingham", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "queueBucket": "prevention", - "time": "09 Apr 2026, 13:00", - "lat": 52.4862, - "lng": -1.8904, - "major": false, - "publishedAt": "2026-04-09T12:00:00.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "prevention_update", - "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 4.1, - "freshnessBucket": 3, - "freshUntil": "2026-04-17T12:00:00.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-1385f8fb52e1752f", - "source": "ProtectUK (NPSA) a Protective Security Guidance", - "sourceUrl": "https://www.protectuk.police.uk/news-views/nactso-exhibiting-food-and-drink-expo-nec-birmingham", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-04-09T12:00:00.000Z", - "confidence": "Verified official source update" - } + "terrorismHits": [ + "terrorism" ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-1385f8fb52e1752f" - }, - { - "id": "protectuk-1", - "fusedIncidentId": "fusion-fb955c89b4e34646", - "title": "NaCTSO Is Exhibiting At The Food And Drink Expo, NEC Birmingham, From 13th-15th April 2026 | ProtectUK", - "location": "Birmingham, UK", - "region": "uk", - "lane": "prevention", - "severity": "moderate", - "status": "Update", - "actor": "ProtectUK (NPSA) a Protective Security Guidance", - "subject": "ProtectUK (NPSA) a Protective Security Guidance", - "happenedWhen": "09 Apr 2026, 13:00", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "NaCTSO is exhibiting at the Food and Drink Expo, NEC Birmingham, from 13 - 15 April 2026. Come and meet NaCTSO’s Business Engagement Unit at stand N147 and learn how they are equipping organisations just like yours with the knowledge and tools to protect your ", - "aiSummary": "ProtectUK (NPSA) a Protective Security Guidance has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "NaCTSO is exhibiting at the Food and Drink Expo, NEC Birmingham, from 13 - 15 April 2026. Come and meet NaCTSO’s Business Engagement Unit at stand N147 and learn how they are equipping organisations just like yours with the knowledge and tools to protect your business and your customers. You can find further information on what to expect from our stand via the Exhibitors 2026 webpage. We hope to see you there. NaCTSO is taking part in a panel discussion alongside Superintendent Maslen and Andrew Goodacre, CEO of the British Independent Retailers Association. The panel will discuss safety and security challenges in the retail sector and will highlight good practice for managing these issues including latest advice, guidance and reporting mechanisms. If you would like to attend, please register at The UK Food & Drink Shows 2026 Registration webpage.", - "peopleInvolved": [], - "source": "ProtectUK (NPSA) a Protective Security Guidance", - "sourceUrl": "https://www.protectuk.police.uk/news-views/nactso-exhibiting-food-and-drink-expo-nec-birmingham-13th-15th-april-2026", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "queueBucket": "prevention", - "time": "09 Apr 2026, 13:00", - "lat": 52.4862, - "lng": -1.8904, - "major": false, - "publishedAt": "2026-04-09T12:00:00.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "prevention_update", + "eventType": "context_update", "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 4.1, + "isOfficial": false, + "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-17T12:00:00.000Z", + "freshUntil": "2026-04-26T18:01:02.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-fb955c89b4e34646", - "source": "ProtectUK (NPSA) a Protective Security Guidance", - "sourceUrl": "https://www.protectuk.police.uk/news-views/nactso-exhibiting-food-and-drink-expo-nec-birmingham-13th-15th-april-2026", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-04-09T12:00:00.000Z", - "confidence": "Verified official source update" + "fusedIncidentId": "fusion-97cd05f1987905f1", + "source": "Euronews a Europe", + "sourceUrl": "https://www.euronews.com/my-europe/2026/04/22/gaspar-orban-son-of-hungarys-outgoing-prime-minister-discharged-from-military", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "publishedAt": "2026-04-22T18:01:02.000Z", + "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-fb955c89b4e34646" + "isDuplicateOf": "fusion-97cd05f1987905f1" }, { - "id": "belfast-live-0", - "fusedIncidentId": "fusion-e1b4d9a62c587fb2", - "title": "Arlene Foster Tells Peers She Received Online Abuse About Father’S Shooting", + "id": "telegraph-world-news-0", + "fusedIncidentId": "fusion-3283730807f65722", + "title": "British Man Jailed For 10 Years Over £71m Wine Fraud", "location": "United Kingdom", - "region": "uk", + "region": "europe", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "Belfast Live", - "subject": "Belfast Live", - "happenedWhen": "16 Apr 2026, 20:58", - "confidence": "Secondary source signal", - "confidenceScore": 0.62, - "summary": "Lady Foster said: “There’s a definite need to deal with the issue of glorification of terrorism...\"", - "aiSummary": "Belfast Live has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Lady Foster said: “There’s a definite need to deal with the issue of glorification of terrorism...\"", + "actor": "The Telegraph a World News", + "subject": "The Telegraph a World News", + "happenedWhen": "22 Apr 2026, 13:34", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "Pair of fraudsters duped victims into investing in group of fine wine collectors that did not exist Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Max Stephens is The Telegraph’s International Crime Correspondent. He has co", + "aiSummary": "The Telegraph a World News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "Pair of fraudsters duped victims into investing in group of fine wine collectors that did not exist Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Max Stephens is The Telegraph’s International Crime Correspondent. He has covered a range of stories from across the world including pieces on terrorism, drug trafficking, immigration and anti-Semitism.", "peopleInvolved": [], - "source": "Belfast Live", - "sourceUrl": "https://www.belfastlive.co.uk/news/northern-ireland/arlene-foster-tells-peers-received-33786021", - "sourceTier": "context", - "reliabilityProfile": "general_media", + "source": "The Telegraph a World News", + "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/22/british-man-jailed-10-years-71-million-wine-fraud/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "16 Apr 2026, 20:58", + "time": "22 Apr 2026, 13:34", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-04-16T19:58:35.000Z", + "publishedAt": "2026-04-22T12:34:00.000Z", "keywordHits": [ - "terrorism", - "shooting" + "terrorism" ], "terrorismHits": [ "terrorism" @@ -5116,213 +4894,233 @@ "eventType": "context_update", "geoPrecision": "country", "isOfficial": false, - "priorityScore": 4.05, + "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-20T19:58:35.000Z", + "freshUntil": "2026-04-26T12:34:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-e1b4d9a62c587fb2", - "source": "Belfast Live", - "sourceUrl": "https://www.belfastlive.co.uk/news/northern-ireland/arlene-foster-tells-peers-received-33786021", - "sourceTier": "context", - "reliabilityProfile": "general_media", - "publishedAt": "2026-04-16T19:58:35.000Z", - "confidence": "Secondary source signal" + "fusedIncidentId": "fusion-3283730807f65722", + "source": "The Telegraph a World News", + "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/22/british-man-jailed-10-years-71-million-wine-fraud/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "publishedAt": "2026-04-22T12:34:00.000Z", + "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-e1b4d9a62c587fb2" + "isDuplicateOf": "fusion-3283730807f65722" }, { - "id": "telegraph-world-news-0", - "fusedIncidentId": "fusion-ed5670f837bf5584", - "title": "Lebanon Says Killing Of Journalist Amal Khalil Was An Israeli War Crime", - "location": "Jerusalem", - "region": "europe", + "id": "sky-news-uk-rss-0", + "fusedIncidentId": "fusion-a24642e6d4fa4d91", + "title": "Anti-Islam Influencer Banned From Entering UK", + "location": "London, UK", + "region": "uk", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "The Telegraph a World News", - "subject": "The Telegraph a World News", - "happenedWhen": "23 Apr 2026, 16:47", + "actor": "Sky News UK a Top Stories (RSS)", + "subject": "Sky News UK a Top Stories (RSS)", + "happenedWhen": "20 Apr 2026, 14:51", "confidence": "Research or analytical source", "confidenceScore": 0.68, - "summary": "IDF accused of dropping grenade from drone to prevent rescuers from reaching dying reporter Amal Khalil Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based in Israel", - "aiSummary": "The Telegraph a World News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "IDF accused of dropping grenade from drone to prevent rescuers from reaching dying reporter Amal Khalil Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based in Israel. He has reported on the Israel-Hamas war, terrorism, Israeli politics, life in the Palestinian territories and Middle East relations. He previously worked as a Senior Reporter, a Health Correspondent, and a News Reporter for The Telegraph.", + "summary": "An anti-Islam influencer has been banned from entering the UK over her extremist views ahead of a rally in London next month, Sky News understands.", + "aiSummary": "Sky News UK a Top Stories (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "An anti-Islam influencer has been banned from entering the UK over her extremist views ahead of a rally in London next month, Sky News understands.", "peopleInvolved": [], - "source": "The Telegraph a World News", - "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/23/lebanon-says-killing-of-journalist-was-israeli-war-crime/", + "source": "Sky News UK a Top Stories (RSS)", + "sourceUrl": "https://news.sky.com/story/anti-islam-influencer-valentina-gomez-banned-from-entering-uk-13534130", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "23 Apr 2026, 16:47", - "lat": 31.7683, - "lng": 35.2137, + "time": "20 Apr 2026, 14:51", + "lat": 51.5074, + "lng": -0.1278, "major": false, - "publishedAt": "2026-04-23T15:47:00.000Z", + "publishedAt": "2026-04-20T13:51:00.000Z", "keywordHits": [ - "terrorism" + "extremist" ], "terrorismHits": [ - "terrorism" + "extremist" ], "eventType": "context_update", - "geoPrecision": "city", + "geoPrecision": "region", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-27T15:47:00.000Z", + "freshUntil": "2026-04-24T13:51:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null - }, - { - "id": "aljazeera-news-rss-0", - "fusedIncidentId": "fusion-9ef52f3d4fa0c4f2", - "title": "Gaza’S Second Front: The Battle Against Disease-Carrying Rats", - "location": "Palestine", - "region": "international", - "lane": "context", + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-a24642e6d4fa4d91", + "source": "Sky News UK a Top Stories (RSS)", + "sourceUrl": "https://news.sky.com/story/anti-islam-influencer-valentina-gomez-banned-from-entering-uk-13534130", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "publishedAt": "2026-04-20T13:51:00.000Z", + "confidence": "Research or analytical source" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-a24642e6d4fa4d91" + }, + { + "id": "guardian-uk-0", + "fusedIncidentId": "fusion-4f87f7a00b1019ba", + "title": "Kensington Gardens Reopens After Police Deem Suspicious Items Non-Hazardous", + "location": "London, UK", + "region": "uk", + "lane": "context", "severity": "moderate", "status": "Update", - "actor": "Al Jazeera English a Top Stories (RSS)", - "subject": "Al Jazeera English a Top Stories (RSS)", - "happenedWhen": "23 Apr 2026, 10:07", + "actor": "The Guardian a UK News", + "subject": "The Guardian a UK News", + "happenedWhen": "18 Apr 2026, 20:33", "confidence": "Research or analytical source", "confidenceScore": 0.68, - "summary": "Palestinian families in Gaza endure daily terror from rats in unsanitary camps, but help is hard to come by.", - "aiSummary": "Al Jazeera English a Top Stories (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Palestinian families in Gaza endure daily terror from rats in unsanitary camps, but help is hard to come by.", + "summary": "Officers responded after group claimed to have targeted nearby Israeli embassy with ‘dangerous substances’ Kensington Gardens in London has reopened after the discovery of several suspicious items including two jars containing a powdered substance that was dee", + "aiSummary": "The Guardian a UK News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "Officers responded after group claimed to have targeted nearby Israeli embassy with ‘dangerous substances’ Kensington Gardens in London has reopened after the discovery of several suspicious items including two jars containing a powdered substance that was deemed to be non-hazardous, police said. Officers in protective clothing responded to an incident near the Israeli embassy on Friday after counter-terrorism police investigated a video shared online in which a group claimed to have targeted the embassy with drones carrying “dangerous substances”. Continue reading...", "peopleInvolved": [], - "source": "Al Jazeera English a Top Stories (RSS)", - "sourceUrl": "https://www.aljazeera.com/features/2026/4/23/gazas-second-front-the-battle-against-disease-carrying-rats?traffic_source=rss", + "source": "The Guardian a UK News", + "sourceUrl": "https://www.theguardian.com/uk-news/2026/apr/18/kensington-gardens-reopen-after-police-deem-suspicious-items-non-hazardous", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "23 Apr 2026, 10:07", - "lat": 31.9522, - "lng": 35.2332, + "time": "18 Apr 2026, 20:33", + "lat": 51.5074, + "lng": -0.1278, "major": false, - "publishedAt": "2026-04-23T09:07:31.000Z", + "publishedAt": "2026-04-18T19:33:02.000Z", "keywordHits": [ - "terror" + "terrorism" ], "terrorismHits": [ - "terror" + "terrorism" ], "eventType": "context_update", "geoPrecision": "region", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-27T09:07:31.000Z", + "freshUntil": "2026-04-22T19:33:02.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-4f87f7a00b1019ba", + "source": "The Guardian a UK News", + "sourceUrl": "https://www.theguardian.com/uk-news/2026/apr/18/kensington-gardens-reopen-after-police-deem-suspicious-items-non-hazardous", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "publishedAt": "2026-04-18T19:33:02.000Z", + "confidence": "Research or analytical source" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-4f87f7a00b1019ba" }, { - "id": "rte-ireland-news-rss-0", - "fusedIncidentId": "fusion-27b73e7a334b0d33", - "title": "Ireland Faces Evolving Terror Threats Including Islamist And Far-Right Risks, Report Finds", - "location": "Ireland", + "id": "telegraph-world-news-0", + "fusedIncidentId": "fusion-73f23a153b667853", + "title": "Lebanon Peace Deal In Full – And How It Could Unravel", + "location": "Jerusalem", "region": "europe", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "RTE News - Ireland (RSS)", - "subject": "RTE News - Ireland (RSS)", - "happenedWhen": "23 Apr 2026, 06:50", + "actor": "The Telegraph a World News", + "subject": "The Telegraph a World News", + "happenedWhen": "17 Apr 2026, 15:43", "confidence": "Research or analytical source", "confidenceScore": 0.68, - "summary": "Oversight judge warns of evolving terror risks and calls for modernised surveillance laws with stronger safeguards for civil liberties", - "aiSummary": "RTE News - Ireland (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Oversight judge warns of evolving terror risks and calls for modernised surveillance laws with stronger safeguards for civil liberties", + "summary": "Ten-point plan looks worryingly familiar as negotiations continue in order to reach lasting truce in the Levant Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based i", + "aiSummary": "The Telegraph a World News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "Ten-point plan looks worryingly familiar as negotiations continue in order to reach lasting truce in the Levant Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based in Israel. He has reported on the Israel-Hamas war, terrorism, Israeli politics, life in the Palestinian territories and Middle East relations. He previously worked as a Senior Reporter, a Health Correspondent, and a News Reporter for The Telegraph.", "peopleInvolved": [], - "source": "RTE News - Ireland (RSS)", - "sourceUrl": "https://www.irishexaminer.com/news/arid-41831747.html", + "source": "The Telegraph a World News", + "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/17/lebanon-peace-deal-in-full-and-how-it-could-unravel/", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "23 Apr 2026, 06:50", - "lat": 53.1424, - "lng": -7.6921, + "time": "17 Apr 2026, 15:43", + "lat": 31.7683, + "lng": 35.2137, "major": false, - "publishedAt": "2026-04-23T05:50:00.000Z", + "publishedAt": "2026-04-17T14:43:00.000Z", "keywordHits": [ - "terror" + "terrorism" ], "terrorismHits": [ - "terror" + "terrorism" ], "eventType": "context_update", - "geoPrecision": "region", + "geoPrecision": "city", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-27T05:50:00.000Z", + "freshUntil": "2026-04-21T14:43:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-27b73e7a334b0d33", - "source": "RTE News - Ireland (RSS)", - "sourceUrl": "https://www.irishexaminer.com/news/arid-41831747.html", + "fusedIncidentId": "fusion-73f23a153b667853", + "source": "The Telegraph a World News", + "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/17/lebanon-peace-deal-in-full-and-how-it-could-unravel/", "sourceTier": "research", "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-23T05:50:00.000Z", + "publishedAt": "2026-04-17T14:43:00.000Z", "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-27b73e7a334b0d33" + "isDuplicateOf": "fusion-73f23a153b667853" }, { - "id": "euronews-europe-0", - "fusedIncidentId": "fusion-97cd05f1987905f1", - "title": "GáSpáR OrbáN, Son Of Hungary'S Outgoing Prime Minister, Discharged From Military", - "location": "Hungary", - "region": "europe", + "id": "guardian-uk-0", + "fusedIncidentId": "fusion-f47448288e8763d4", + "title": "Police Respond To Incident Near Israeli Embassy In London", + "location": "London, UK", + "region": "uk", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "Euronews a Europe", - "subject": "Euronews a Europe", - "happenedWhen": "22 Apr 2026, 19:01", + "actor": "The Guardian a UK News", + "subject": "The Guardian a UK News", + "happenedWhen": "17 Apr 2026, 13:13", "confidence": "Research or analytical source", "confidenceScore": 0.68, - "summary": "According to Kontroll, the son of the outgoing Prime Minister, Gáspár Orbán, the son of Hungary's outgoing Prime Minister Viktor Orbán has been discharged from the Hungarian Defence Forces, local media report. Sources at 444.hu confirmed that Orbán, who held t", - "aiSummary": "Euronews a Europe has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "According to Kontroll, the son of the outgoing Prime Minister, Gáspár Orbán, the son of Hungary's outgoing Prime Minister Viktor Orbán has been discharged from the Hungarian Defence Forces, local media report. Sources at 444.hu confirmed that Orbán, who held the rank of captain, submitted his demobilsation request before the parliamentary elections on 12 April which saw his father's Fidesz party trounced by the opposition in a landslide. Gáspár Orbán was born in 1992 studied law and first became a footballer, playing as a midfielder for Videoton FC Fehérvár and Puskás Akadémia FC before founding a charismatic Christian youth movement called Felház. He was sworn into the Hungarian Defence Forces after taking his oath in 2019 and in 2020 was sent on a nine-month training course at the elite Royal Military Academy Sandhurst in the UK. His Hungarian peer on that course, Captain Szilveszter Pálinkás, told the telex news site that he had been called by the Chief of General Staff and told, \"I have to feed him, water him, make sure he completes this academy, because if he doesn't, we'll lose our jobs.\" A Hungarian military mission to Chad, with the aim of stemming migrant flows to Europe, was reportedly devised by Orbán who allegedly told a colleague at Sandhurst that he had a “divine inspiration” to help African Christians. In 2024, Hungary announced it was sending around 200 troops to Chad to provide training and support counter-terrorism operations. That mission raised eyebrows in Hungary, partly because the country had no substantive relations with Chad before and the promised of $200 million (€170 million) in aid was an deemed excessive pledge from one of Europe’s poorer countries. Captain Pálinkás said that the military mission to Chad had been planned by Gáspár Orbán, th", + "summary": "‘Discarded items’ assessed as officers investigate video in which group claims to have targeted embassy with drones Police in protective clothing are responding to an incident near the Israeli embassy in central London as counter-terrorism officers investigate", + "aiSummary": "The Guardian a UK News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "‘Discarded items’ assessed as officers investigate video in which group claims to have targeted embassy with drones Police in protective clothing are responding to an incident near the Israeli embassy in central London as counter-terrorism officers investigate a video shared online overnight in which a group claims to have targeted the embassy with drones carrying “dangerous substances”. The Metropolitan police said there was an increased police presence in Kensington Gardens as officers investigated a number of “discarded items” and have urged people to avoid the area while they carry out their work. Continue reading...", "peopleInvolved": [], - "source": "Euronews a Europe", - "sourceUrl": "https://www.euronews.com/my-europe/2026/04/22/gaspar-orban-son-of-hungarys-outgoing-prime-minister-discharged-from-military", + "source": "The Guardian a UK News", + "sourceUrl": "https://www.theguardian.com/uk-news/2026/apr/17/security-incident-near-israel-embassy-london-drones", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "22 Apr 2026, 19:01", - "lat": 47.1625, - "lng": 19.5033, + "time": "17 Apr 2026, 13:13", + "lat": 51.5074, + "lng": -0.1278, "major": false, - "publishedAt": "2026-04-22T18:01:02.000Z", + "publishedAt": "2026-04-17T12:13:47.000Z", "keywordHits": [ "terrorism" ], @@ -5334,54 +5132,44 @@ "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-26T18:01:02.000Z", + "freshUntil": "2026-04-21T12:13:47.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-97cd05f1987905f1", - "source": "Euronews a Europe", - "sourceUrl": "https://www.euronews.com/my-europe/2026/04/22/gaspar-orban-son-of-hungarys-outgoing-prime-minister-discharged-from-military", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-22T18:01:02.000Z", - "confidence": "Research or analytical source" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-97cd05f1987905f1" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { "id": "telegraph-world-news-0", - "fusedIncidentId": "fusion-3283730807f65722", - "title": "British Man Jailed For 10 Years Over £71m Wine Fraud", - "location": "United Kingdom", + "fusedIncidentId": "fusion-6c18e7f7e5a9f377", + "title": "Israel And Lebanon Agree To Ceasefire", + "location": "Jerusalem", "region": "europe", "lane": "context", "severity": "moderate", "status": "Update", "actor": "The Telegraph a World News", "subject": "The Telegraph a World News", - "happenedWhen": "22 Apr 2026, 13:34", + "happenedWhen": "16 Apr 2026, 20:35", "confidence": "Research or analytical source", "confidenceScore": 0.68, - "summary": "Pair of fraudsters duped victims into investing in group of fine wine collectors that did not exist Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Max Stephens is The Telegraph’s International Crime Correspondent. He has co", + "summary": "Trump announces 10-day pause and pledges US help to achieve a ‘lasting peace’ Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based in Israel. He has reported on the I", "aiSummary": "The Telegraph a World News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Pair of fraudsters duped victims into investing in group of fine wine collectors that did not exist Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Max Stephens is The Telegraph’s International Crime Correspondent. He has covered a range of stories from across the world including pieces on terrorism, drug trafficking, immigration and anti-Semitism.", + "sourceExtract": "Trump announces 10-day pause and pledges US help to achieve a ‘lasting peace’ Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based in Israel. He has reported on the Israel-Hamas war, terrorism, Israeli politics, life in the Palestinian territories and Middle East relations. He previously worked as a Senior Reporter, a Health Correspondent, and a News Reporter for The Telegraph.", "peopleInvolved": [], "source": "The Telegraph a World News", - "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/22/british-man-jailed-10-years-71-million-wine-fraud/", + "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/16/israel-expands-lebanon-invasion-to-mount-hermon/", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "22 Apr 2026, 13:34", - "lat": 54.5, - "lng": -2.5, + "time": "16 Apr 2026, 20:35", + "lat": 31.7683, + "lng": 35.2137, "major": false, - "publishedAt": "2026-04-22T12:34:00.000Z", + "publishedAt": "2026-04-16T19:35:00.000Z", "keywordHits": [ "terrorism" ], @@ -5389,117 +5177,117 @@ "terrorism" ], "eventType": "context_update", - "geoPrecision": "country", + "geoPrecision": "city", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-26T12:34:00.000Z", + "freshUntil": "2026-04-20T19:35:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-3283730807f65722", + "fusedIncidentId": "fusion-6c18e7f7e5a9f377", "source": "The Telegraph a World News", - "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/22/british-man-jailed-10-years-71-million-wine-fraud/", + "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/16/israel-expands-lebanon-invasion-to-mount-hermon/", "sourceTier": "research", "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-22T12:34:00.000Z", + "publishedAt": "2026-04-16T19:35:00.000Z", "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-3283730807f65722" + "isDuplicateOf": "fusion-6c18e7f7e5a9f377" }, { - "id": "sky-news-uk-rss-0", - "fusedIncidentId": "fusion-a24642e6d4fa4d91", - "title": "Anti-Islam Influencer Banned From Entering UK", - "location": "London, UK", - "region": "uk", + "id": "bbc-news-london-rss-0", + "fusedIncidentId": "fusion-598a019e6d315ccf", + "title": "Man Arrested Climbing Into Israeli Embassy Had Arrived On Small Boat Twice, Court Hears", + "location": "Europe", + "region": "london", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "Sky News UK a Top Stories (RSS)", - "subject": "Sky News UK a Top Stories (RSS)", - "happenedWhen": "20 Apr 2026, 14:51", + "actor": "BBC News - London RSS", + "subject": "BBC News - London RSS", + "happenedWhen": "15 Apr 2026, 17:09", "confidence": "Research or analytical source", "confidenceScore": 0.68, - "summary": "An anti-Islam influencer has been banned from entering the UK over her extremist views ahead of a rally in London next month, Sky News understands.", - "aiSummary": "Sky News UK a Top Stories (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "An anti-Islam influencer has been banned from entering the UK over her extremist views ahead of a rally in London next month, Sky News understands.", + "summary": "Abdullah Albadri denies charges preparing terrorist acts and being in possession of two knives.", + "aiSummary": "BBC News - London RSS has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "Abdullah Albadri denies charges preparing terrorist acts and being in possession of two knives.", "peopleInvolved": [], - "source": "Sky News UK a Top Stories (RSS)", - "sourceUrl": "https://news.sky.com/story/anti-islam-influencer-valentina-gomez-banned-from-entering-uk-13534130", + "source": "BBC News - London RSS", + "sourceUrl": "https://www.bbc.com/news/articles/c1mkk4plgd4o?at_medium=RSS&at_campaign=rss", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "20 Apr 2026, 14:51", - "lat": 51.5074, - "lng": -0.1278, + "time": "15 Apr 2026, 17:09", + "lat": 54, + "lng": 15, "major": false, - "publishedAt": "2026-04-20T13:51:00.000Z", + "publishedAt": "2026-04-15T16:09:32.000Z", "keywordHits": [ - "extremist" + "arrested" ], "terrorismHits": [ - "extremist" + "terrorist" ], "eventType": "context_update", - "geoPrecision": "region", + "geoPrecision": "country", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-24T13:51:00.000Z", + "freshUntil": "2026-04-19T16:09:32.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-a24642e6d4fa4d91", - "source": "Sky News UK a Top Stories (RSS)", - "sourceUrl": "https://news.sky.com/story/anti-islam-influencer-valentina-gomez-banned-from-entering-uk-13534130", + "fusedIncidentId": "fusion-598a019e6d315ccf", + "source": "BBC News - London RSS", + "sourceUrl": "https://www.bbc.com/news/articles/c1mkk4plgd4o?at_medium=RSS&at_campaign=rss", "sourceTier": "research", "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-20T13:51:00.000Z", + "publishedAt": "2026-04-15T16:09:32.000Z", "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-a24642e6d4fa4d91" + "isDuplicateOf": "fusion-598a019e6d315ccf" }, { - "id": "guardian-uk-0", - "fusedIncidentId": "fusion-4f87f7a00b1019ba", - "title": "Kensington Gardens Reopens After Police Deem Suspicious Items Non-Hazardous", - "location": "London, UK", - "region": "uk", + "id": "aljazeera-news-rss-0", + "fusedIncidentId": "fusion-7f5a1654ff85bd55", + "title": "French Court Rules Cement Giant Lafarge Guilty Of Funding Syrian Terrorism", + "location": "Europe", + "region": "international", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "The Guardian a UK News", - "subject": "The Guardian a UK News", - "happenedWhen": "18 Apr 2026, 20:33", + "actor": "Al Jazeera English a Top Stories (RSS)", + "subject": "Al Jazeera English a Top Stories (RSS)", + "happenedWhen": "13 Apr 2026, 19:52", "confidence": "Research or analytical source", "confidenceScore": 0.68, - "summary": "Officers responded after group claimed to have targeted nearby Israeli embassy with ‘dangerous substances’ Kensington Gardens in London has reopened after the discovery of several suspicious items including two jars containing a powdered substance that was dee", - "aiSummary": "The Guardian a UK News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Officers responded after group claimed to have targeted nearby Israeli embassy with ‘dangerous substances’ Kensington Gardens in London has reopened after the discovery of several suspicious items including two jars containing a powdered substance that was deemed to be non-hazardous, police said. Officers in protective clothing responded to an incident near the Israeli embassy on Friday after counter-terrorism police investigated a video shared online in which a group claimed to have targeted the embassy with drones carrying “dangerous substances”. Continue reading...", + "summary": "Long running case regarding Lafarte's actions amid Syrian civil war sees company ordered to pay fine, executives jailed.", + "aiSummary": "Al Jazeera English a Top Stories (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "Long running case regarding Lafarte's actions amid Syrian civil war sees company ordered to pay fine, executives jailed.", "peopleInvolved": [], - "source": "The Guardian a UK News", - "sourceUrl": "https://www.theguardian.com/uk-news/2026/apr/18/kensington-gardens-reopen-after-police-deem-suspicious-items-non-hazardous", + "source": "Al Jazeera English a Top Stories (RSS)", + "sourceUrl": "https://www.aljazeera.com/news/2026/4/13/french-court-rules-cement-giant-lafarge-guilty-of-funding-syrian-terrorism?traffic_source=rss", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "18 Apr 2026, 20:33", - "lat": 51.5074, - "lng": -0.1278, + "time": "13 Apr 2026, 19:52", + "lat": 54, + "lng": 15, "major": false, - "publishedAt": "2026-04-18T19:33:02.000Z", + "publishedAt": "2026-04-13T18:52:20.000Z", "keywordHits": [ "terrorism" ], @@ -5507,1147 +5295,971 @@ "terrorism" ], "eventType": "context_update", - "geoPrecision": "region", + "geoPrecision": "country", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-22T19:33:02.000Z", + "freshUntil": "2026-04-17T18:52:20.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-4f87f7a00b1019ba", - "source": "The Guardian a UK News", - "sourceUrl": "https://www.theguardian.com/uk-news/2026/apr/18/kensington-gardens-reopen-after-police-deem-suspicious-items-non-hazardous", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-18T19:33:02.000Z", - "confidence": "Research or analytical source" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-4f87f7a00b1019ba" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "euronews-europe-1", - "fusedIncidentId": "fusion-f9ded5cf64e9e8df", - "title": "'I Understand When You Say No To War,' Brazil'S Lula Tells Spain'S PM Pedro SáNchez", - "location": "Barcelona, Spain", + "id": "telegraph-world-news-0", + "fusedIncidentId": "fusion-41911374c56f38ee", + "title": "What It’S Like To Be A Soldier Being Hunted By Drones In Ukraine", + "location": "Kyiv, Ukraine", "region": "europe", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "Euronews a Europe", - "subject": "Euronews a Europe", - "happenedWhen": "17 Apr 2026, 16:20", + "actor": "The Telegraph a World News", + "subject": "The Telegraph a World News", + "happenedWhen": "13 Apr 2026, 17:12", "confidence": "Research or analytical source", "confidenceScore": 0.68, - "summary": "Brazil's President Luiz Inácio Lula da Silva told Spanish Prime Minister Pedro Sánchez \"I understand you when you say no to war,\" at the start of a two-day visit to Spain to attend the weekend's In Defence of Democracy summit. Lula recalled \"the horror suffere", - "aiSummary": "Euronews a Europe has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Brazil's President Luiz Inácio Lula da Silva told Spanish Prime Minister Pedro Sánchez \"I understand you when you say no to war,\" at the start of a two-day visit to Spain to attend the weekend's In Defence of Democracy summit. Lula recalled \"the horror suffered by Spain\" during the Civil War in the 1930s, noting that \"several regions of the world are in conflict again\" and that \"we are witnessing, astonished, a new arms race: women and children are dying, AI is replacing ethics; that is why I completely understand when you say no to war.\" Lula and Sánchez, who will meet with other leaders concerned about the fate of the democratic order and the rise of populism, are both outspoken in their criticism of US President Donald Trump, who has threatened both with punitive tariffs. They are considered standard-bearers of progressive or liberal politics on their respective continents, where reactionary parties and far-right populism have been on the rise for years. Lula and Sánchez, along with ministers from their cabinets, met at a former royal palace in Barcelona on Friday when they were expected to sign agreements regarding their economies, technology and social policies. Their bilateral meeting will be prelude for the following day's double dose of gatherings when Lula and Sánchez confer with other leaders at two events inside a sprawling conference centre in Spain's second city. The first gathering on Saturday is the IV Meeting in Defence of Democracy. The event was launched by Brazil and Spain in 2024 as a forum to exchange ideas aimed at combating the \"extremism, polarisation and misinformation\" that undermines participatory democracy, the organisers say. The first two editions of this event were held at the United Nations and the previous one was in Chile last year. Whi", + "summary": "The Telegraph experiences the terror of being pursued by deadly flying devices in a simulated kill zone Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Antonia Langford is a reporter based in Kyiv who covers Ukraine and Russ", + "aiSummary": "The Telegraph a World News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "The Telegraph experiences the terror of being pursued by deadly flying devices in a simulated kill zone Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Antonia Langford is a reporter based in Kyiv who covers Ukraine and Russia. She has also written for The Times, The Guardian and The i, among others. Antonia was shortlisted for Best Early Career Journalist in the Freelance Journalist Awards 2025.", "peopleInvolved": [], - "source": "Euronews a Europe", - "sourceUrl": "https://www.euronews.com/2026/04/17/i-understand-when-you-say-no-to-war-brazils-lula-tells-spains-pm-pedro-sanchez", + "source": "The Telegraph a World News", + "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/13/what-its-like-to-be-hunted-by-drones-in-ukraine/", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "17 Apr 2026, 16:20", - "lat": 41.3851, - "lng": 2.1734, + "time": "13 Apr 2026, 17:12", + "lat": 50.4501, + "lng": 30.5234, "major": false, - "publishedAt": "2026-04-17T15:20:47.000Z", + "publishedAt": "2026-04-13T16:12:00.000Z", "keywordHits": [ - "attack" + "terror" ], "terrorismHits": [ - "extremism" + "terror" ], "eventType": "context_update", "geoPrecision": "region", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-21T15:20:47.000Z", + "freshUntil": "2026-04-17T16:12:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-f9ded5cf64e9e8df", - "source": "Euronews a Europe", - "sourceUrl": "https://www.euronews.com/2026/04/17/i-understand-when-you-say-no-to-war-brazils-lula-tells-spains-pm-pedro-sanchez", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-17T15:20:47.000Z", - "confidence": "Research or analytical source" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-f9ded5cf64e9e8df" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "telegraph-world-news-0", - "fusedIncidentId": "fusion-73f23a153b667853", - "title": "Lebanon Peace Deal In Full – And How It Could Unravel", - "location": "Jerusalem", - "region": "europe", + "id": "aljazeera-news-rss-0", + "fusedIncidentId": "fusion-effe8b4f6a0cb88c", + "title": "What Do We Know About Sea Mines In And Around The Strait Of Hormuz?", + "location": "Europe", + "region": "international", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "The Telegraph a World News", - "subject": "The Telegraph a World News", - "happenedWhen": "17 Apr 2026, 15:43", + "actor": "Al Jazeera English a Top Stories (RSS)", + "subject": "Al Jazeera English a Top Stories (RSS)", + "happenedWhen": "13 Apr 2026, 16:12", "confidence": "Research or analytical source", "confidenceScore": 0.68, - "summary": "Ten-point plan looks worryingly familiar as negotiations continue in order to reach lasting truce in the Levant Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based i", - "aiSummary": "The Telegraph a World News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Ten-point plan looks worryingly familiar as negotiations continue in order to reach lasting truce in the Levant Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based in Israel. He has reported on the Israel-Hamas war, terrorism, Israeli politics, life in the Palestinian territories and Middle East relations. He previously worked as a Senior Reporter, a Health Correspondent, and a News Reporter for The Telegraph.", + "summary": "The psychological terror that the presence of sea mines can generate could paralyse the Strait of Hormuz.", + "aiSummary": "Al Jazeera English a Top Stories (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "The psychological terror that the presence of sea mines can generate could paralyse the Strait of Hormuz.", "peopleInvolved": [], - "source": "The Telegraph a World News", - "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/17/lebanon-peace-deal-in-full-and-how-it-could-unravel/", + "source": "Al Jazeera English a Top Stories (RSS)", + "sourceUrl": "https://www.aljazeera.com/economy/2026/4/13/what-do-we-know-about-sea-mines-in-and-around-the-strait-of-hormuz?traffic_source=rss", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "17 Apr 2026, 15:43", - "lat": 31.7683, - "lng": 35.2137, + "time": "13 Apr 2026, 16:12", + "lat": 54, + "lng": 15, "major": false, - "publishedAt": "2026-04-17T14:43:00.000Z", + "publishedAt": "2026-04-13T15:12:25.000Z", "keywordHits": [ - "terrorism" + "terror" ], "terrorismHits": [ - "terrorism" + "terror" ], "eventType": "context_update", - "geoPrecision": "city", + "geoPrecision": "country", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-21T14:43:00.000Z", + "freshUntil": "2026-04-17T15:12:25.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-73f23a153b667853", - "source": "The Telegraph a World News", - "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/17/lebanon-peace-deal-in-full-and-how-it-could-unravel/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-17T14:43:00.000Z", - "confidence": "Research or analytical source" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-73f23a153b667853" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { "id": "euronews-europe-0", - "fusedIncidentId": "fusion-9463f898f7190ed9", - "title": "Euronews Culture'S Film Of The Week: 'Lee Cronin'S The Mummy' - A Successful Exhumation?", - "location": "Sofia, Bulgaria", + "fusedIncidentId": "fusion-6547a22c4ea82ed1", + "title": "Pope Leo XIV Says 'Enough Of The Idolatry' As He Grows Increasingly Frustrated Over War", + "location": "Tehran, Iran", "region": "europe", "lane": "context", "severity": "moderate", "status": "Update", "actor": "Euronews a Europe", "subject": "Euronews a Europe", - "happenedWhen": "17 Apr 2026, 14:31", + "happenedWhen": "11 Apr 2026, 21:18", "confidence": "Research or analytical source", "confidenceScore": 0.68, - "summary": "In the wake of the recently announced Brendan Fraser-starring The Mummy 4 (set to hit cinemas in 2028), there’s been a relentless social media campaign regarding the actor's potential presence in Lee Cronin’s The Mummy. So, let’s get this out of the way from t", + "summary": "Pope Leo XIV did not hold back on Saturday as he denounced the “delusion of omnipotence” that is powering the US-Israel war on Iran and urges political leaders to stop and engage in peace processes. All while, the US and Iran entered peace negotiations in Paki", "aiSummary": "Euronews a Europe has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "In the wake of the recently announced Brendan Fraser-starring The Mummy 4 (set to hit cinemas in 2028), there’s been a relentless social media campaign regarding the actor's potential presence in Lee Cronin’s The Mummy. So, let’s get this out of the way from the get-go: No, Brendan Fraser is not in Lee Cronin’s The Mummy. And yes, that is its full title – a branding stunt that is simultaneously bold and very pretentious, a clear studio move aiming to differentiate 2026's Mummy issues from past (and future) iterations. This year’s mummified menace movie is an entirely separate reinvention of the franchise from a different production house. It’s the first Mummy film that isn’t produced by either the Hammer or Universal Studios. It is also, by our calculations, the longest – with a 134-minute runtime. And it’s certainly the goriest. That’s hardly a high bar to clear, considering recent offerings have given us swashbuckling adventures and a Mission: Impossible-styled one starring Tom Cruise, which tanked Universal’s plans for a Dark Universe slate of movies. However, if images of rotting flesh being peeled off, overgrown nails being clipped, creepy crawlies sneaking into mouths and severed vocal cords already give you the willies, you may want to sit this one out. Irish director Lee Cronin (The Hole In The Ground, Evil Dead Rise) explores a new horror angle for the wrapped terror, delivering his take on ancient evil. Instead of giving audiences some Fraserific frolics, or indeed a Boris Karloff or Sofia Boutella figure, we get eight-year-old Katie (Emily Mitchell / Natalie Grace). She's the daughter of Charlie (Jack Reynor) and Larissa (Laia Costa), who vanishes into a Cairo sandstorm. Eight years later, the family is still wrestling with the emotional fallout when they get", + "sourceExtract": "Pope Leo XIV did not hold back on Saturday as he denounced the “delusion of omnipotence” that is powering the US-Israel war on Iran and urges political leaders to stop and engage in peace processes. All while, the US and Iran entered peace negotiations in Pakistan. During an evening prayer in St. Peter's Basilica Pope Leo XIV did not mention the US nor did he mention US President Donald Trump, however, his tone and message appeared directed at US officials and Trump, who have bragged of their military superiority and justified the war using religion. “Enough of the idolatry of self and money!” Leo said. “Enough of the display of power! Enough of war!” The US Military Religious Freedom Foundation (MRFF) announced on 3 March 2026 that it had received more than 200 complaints from military personnel from various branches of the armed forces - including the Marines, Air Force and Space Force - accusing their commanders of using extremist Christian rhetoric to justify war against Iran. Among those in the basilica was the archbishop of Tehran, Dominique Joseph Mathieu. The United States was represented by Laura Hochla, the deputy chief of mission, the US Embassy said. US-born Pope Leo XIV had initially been reluctant about openly criticising the war, however, he stepped up his criticism starting on Palm Sunday. Earlier this week, he condemned Trump's threats to annihilate Iranian civilisation calling them \"truly unacceptable\" and pushed for dialogue to be prioritised. On Saturday, the pontiff called for all people of good will to pray for peace and demand an end to war from their political leaders. Praying for peace, Pope Leo XIV said, was a way to “break the demonic cycle of evil” to build instead the Kingdom of God where there are no swords, drones or “unjust profit.” “It i", "peopleInvolved": [], "source": "Euronews a Europe", - "sourceUrl": "https://www.euronews.com/culture/2026/04/17/euronews-cultures-film-of-the-week-lee-cronins-the-mummy-a-successful-exhumation", + "sourceUrl": "https://www.euronews.com/my-europe/2026/04/11/pope-leo-xiv-says-enough-of-the-idolatry-as-he-grows-increasingly-frustrated-over-war", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "17 Apr 2026, 14:31", - "lat": 42.6977, - "lng": 23.3219, + "time": "11 Apr 2026, 21:18", + "lat": 35.6892, + "lng": 51.389, "major": false, - "publishedAt": "2026-04-17T13:31:59.000Z", + "publishedAt": "2026-04-11T20:18:47.000Z", "keywordHits": [ - "terror" + "extremist" ], "terrorismHits": [ - "terror" + "extremist" ], "eventType": "context_update", "geoPrecision": "region", "isOfficial": false, "priorityScore": 3.8, "freshnessBucket": 3, - "freshUntil": "2026-04-21T13:31:59.000Z", + "freshUntil": "2026-04-15T20:18:47.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-6547a22c4ea82ed1", + "source": "Euronews a Europe", + "sourceUrl": "https://www.euronews.com/my-europe/2026/04/11/pope-leo-xiv-says-enough-of-the-idolatry-as-he-grows-increasingly-frustrated-over-war", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "publishedAt": "2026-04-11T20:18:47.000Z", + "confidence": "Research or analytical source" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-6547a22c4ea82ed1" }, { - "id": "guardian-uk-0", - "fusedIncidentId": "fusion-f47448288e8763d4", - "title": "Police Respond To Incident Near Israeli Embassy In London", - "location": "London, UK", + "id": "the-week-uk-0", + "fusedIncidentId": "fusion-7d73e6f4a234ac55", + "title": "764: The Online Extremist Group Targeting Kids Nationwide", + "location": "United Kingdom", "region": "uk", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "The Guardian a UK News", - "subject": "The Guardian a UK News", - "happenedWhen": "17 Apr 2026, 13:13", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "‘Discarded items’ assessed as officers investigate video in which group claims to have targeted embassy with drones Police in protective clothing are responding to an incident near the Israeli embassy in central London as counter-terrorism officers investigate", - "aiSummary": "The Guardian a UK News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "‘Discarded items’ assessed as officers investigate video in which group claims to have targeted embassy with drones Police in protective clothing are responding to an incident near the Israeli embassy in central London as counter-terrorism officers investigate a video shared online overnight in which a group claims to have targeted the embassy with drones carrying “dangerous substances”. The Metropolitan police said there was an increased police presence in Kensington Gardens as officers investigated a number of “discarded items” and have urged people to avoid the area while they carry out their work. Continue reading...", + "actor": "The Week UK", + "subject": "The Week UK", + "happenedWhen": "16 Apr 2026, 17:28", + "confidence": "Secondary source signal", + "confidenceScore": 0.6, + "summary": "The FBI has urged parents to be vigilant", + "aiSummary": "The Week UK has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "The FBI has urged parents to be vigilant", "peopleInvolved": [], - "source": "The Guardian a UK News", - "sourceUrl": "https://www.theguardian.com/uk-news/2026/apr/17/security-incident-near-israel-embassy-london-drones", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "source": "The Week UK", + "sourceUrl": "https://theweek.com/crime/764-online-extremist-group-targeting-kids", + "sourceTier": "corroboration", + "reliabilityProfile": "general_media", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "17 Apr 2026, 13:13", - "lat": 51.5074, - "lng": -0.1278, + "time": "16 Apr 2026, 17:28", + "lat": 54.5, + "lng": -2.5, "major": false, - "publishedAt": "2026-04-17T12:13:47.000Z", + "publishedAt": "2026-04-16T16:28:41.000Z", "keywordHits": [ - "terrorism" + "extremist" ], "terrorismHits": [ - "terrorism" + "extremist" ], "eventType": "context_update", - "geoPrecision": "region", + "geoPrecision": "country", "isOfficial": false, - "priorityScore": 3.8, + "priorityScore": 3.45, "freshnessBucket": 3, - "freshUntil": "2026-04-21T12:13:47.000Z", + "freshUntil": "2026-04-20T16:28:41.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-7d73e6f4a234ac55", + "source": "The Week UK", + "sourceUrl": "https://theweek.com/crime/764-online-extremist-group-targeting-kids", + "sourceTier": "corroboration", + "reliabilityProfile": "general_media", + "publishedAt": "2026-04-16T16:28:41.000Z", + "confidence": "Secondary source signal" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-7d73e6f4a234ac55" }, { - "id": "telegraph-world-news-0", - "fusedIncidentId": "fusion-6c18e7f7e5a9f377", - "title": "Israel And Lebanon Agree To Ceasefire", - "location": "Jerusalem", - "region": "europe", - "lane": "context", - "severity": "moderate", + "id": "deadline-news-0", + "fusedIncidentId": "fusion-8d93646fd8c366ac", + "title": "Swinney Urges Nation To Unite Against “Extremist” Reform", + "location": "Scotland, UK", + "region": "uk", + "lane": "context", + "severity": "moderate", "status": "Update", - "actor": "The Telegraph a World News", - "subject": "The Telegraph a World News", - "happenedWhen": "16 Apr 2026, 20:35", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "Trump announces 10-day pause and pledges US help to achieve a ‘lasting peace’ Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based in Israel. He has reported on the I", - "aiSummary": "The Telegraph a World News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Trump announces 10-day pause and pledges US help to achieve a ‘lasting peace’ Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based in Israel. He has reported on the Israel-Hamas war, terrorism, Israeli politics, life in the Palestinian territories and Middle East relations. He previously worked as a Senior Reporter, a Health Correspondent, and a News Reporter for The Telegraph.", + "actor": "Deadline News", + "subject": "Deadline News", + "happenedWhen": "13 Apr 2026, 11:04", + "confidence": "Secondary source signal", + "confidenceScore": 0.6, + "summary": "JOHN Swinney, Scotland’s First Minister, has described Reform UK’s Nigel Farage as a “right-wing extremist” and Scots to unite behind the SNP against the right-wing party.  Swinney claimed that an SNP majority is the only way to e", + "aiSummary": "Deadline News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "JOHN Swinney, Scotland’s First Minister, has described Reform UK’s Nigel Farage as a “right-wing extremist” and Scots to unite behind the SNP against the right-wing party.  Swinney claimed that an SNP majority is the only way to ensure that Reform UK are “locked out” of power.  He said that Anas Sarwar, the Scottish Labour leader, will seek to “force” his way into power […] The post Swinney urges nation to unite against “extremist” Reform appeared first on Deadline News .", "peopleInvolved": [], - "source": "The Telegraph a World News", - "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/16/israel-expands-lebanon-invasion-to-mount-hermon/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "source": "Deadline News", + "sourceUrl": "https://www.deadlinenews.co.uk/2026/04/13/swinney-urges-nation-to-unite-against-extremist-reform/", + "sourceTier": "context", + "reliabilityProfile": "general_media", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueBucket": "context", - "time": "16 Apr 2026, 20:35", - "lat": 31.7683, - "lng": 35.2137, + "time": "13 Apr 2026, 11:04", + "lat": 56.4907, + "lng": -4.2026, "major": false, - "publishedAt": "2026-04-16T19:35:00.000Z", + "publishedAt": "2026-04-13T10:04:59.000Z", "keywordHits": [ - "terrorism" + "extremist" ], "terrorismHits": [ - "terrorism" + "extremist" ], "eventType": "context_update", - "geoPrecision": "city", + "geoPrecision": "region", "isOfficial": false, - "priorityScore": 3.8, + "priorityScore": 3.45, "freshnessBucket": 3, - "freshUntil": "2026-04-20T19:35:00.000Z", + "freshUntil": "2026-04-17T10:04:59.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-6c18e7f7e5a9f377", - "source": "The Telegraph a World News", - "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/16/israel-expands-lebanon-invasion-to-mount-hermon/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-16T19:35:00.000Z", - "confidence": "Research or analytical source" + "fusedIncidentId": "fusion-8d93646fd8c366ac", + "source": "Deadline News", + "sourceUrl": "https://www.deadlinenews.co.uk/2026/04/13/swinney-urges-nation-to-unite-against-extremist-reform/", + "sourceTier": "context", + "reliabilityProfile": "general_media", + "publishedAt": "2026-04-13T10:04:59.000Z", + "confidence": "Secondary source signal" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-6c18e7f7e5a9f377" + "isDuplicateOf": "fusion-8d93646fd8c366ac" }, { - "id": "bbc-news-london-rss-0", - "fusedIncidentId": "fusion-598a019e6d315ccf", - "title": "Man Arrested Climbing Into Israeli Embassy Had Arrived On Small Boat Twice, Court Hears", - "location": "Europe", + "id": "met-police-latest-news-0", + "fusedIncidentId": "fusion-eb23139c042e3c14", + "title": "UPDATED: Two More Arrests For Conspiracy To Commit Arson", + "location": "Birmingham, UK", "region": "london", - "lane": "context", - "severity": "moderate", - "status": "Update", - "actor": "BBC News - London RSS", - "subject": "BBC News - London RSS", - "happenedWhen": "15 Apr 2026, 17:09", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "Abdullah Albadri denies charges preparing terrorist acts and being in possession of two knives.", - "aiSummary": "BBC News - London RSS has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Abdullah Albadri denies charges preparing terrorist acts and being in possession of two knives.", - "peopleInvolved": [], - "source": "BBC News - London RSS", - "sourceUrl": "https://www.bbc.com/news/articles/c1mkk4plgd4o?at_medium=RSS&at_campaign=rss", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "15 Apr 2026, 17:09", - "lat": 54, - "lng": 15, + "lane": "incidents", + "severity": "critical", + "status": "Arrest", + "actor": "Metropolitan Police - Latest News", + "subject": "Metropolitan Police - Latest News", + "happenedWhen": "22 Apr 2026, 21:15", + "confidence": "Verified official source update", + "confidenceScore": 0.92, + "summary": "News - 22 April 2026 21:15 Share Two more arrests have been made by Counter Terrorism Policing (CTP) officers investigating an alleged conspiracy to commit arson at a venue related to the Jewish community. A total of nine people have now been arrested during t", + "aiSummary": "News - 22 April 2026 21:15 Share Two more arrests have been made by Counter Terrorism Policing (CTP) officers investigating an alleged conspiracy to commit arson at a venue related to the Jewish community. A total of nine people have now been arrested during the past three days as part of a proactive investigation. Those arrested are suspected of being involved in planning an arson attack at an unknown venue related to the Jewish community. The latest two arrests include [H] a 19-year-old man and [I] a 26-year-old man arrested in Watford on Tuesday, 21 April. They were both taken into custody, before being released on bail. Seven other people previously arrested for conspiracy to commit arson remain under investigation and have been released on bail, with strict conditions. They include: - Three men - [A] aged 24, [B] aged 25 and [C] aged 26 - arrested in Harpenden shortly after 21.00hrs on 19 April. - [D] A 25-year-old man arrested in Stevenage on 20 April.", + "sourceExtract": "News - 22 April 2026 21:15 Share Two more arrests have been made by Counter Terrorism Policing (CTP) officers investigating an alleged conspiracy to commit arson at a venue related to the Jewish community. A total of nine people have now been arrested during the past three days as part of a proactive investigation. Those arrested are suspected of being involved in planning an arson attack at an unknown venue related to the Jewish community. The latest two arrests include [H] a 19-year-old man and [I] a 26-year-old man arrested in Watford on Tuesday, 21 April. They were both taken into custody, before being released on bail. Seven other people previously arrested for conspiracy to commit arson remain under investigation and have been released on bail, with strict conditions. They include: - Three men - [A] aged 24, [B] aged 25 and [C] aged 26 - arrested in Harpenden shortly after 21.00hrs on 19 April. - [D] A 25-year-old man arrested in Stevenage on 20 April. - [E] A 26-year-old man, and two women, [F] aged 50 and [G] 59, arrested in a car near Birmingham on 20 April. Deputy Assistant Commissioner Vicki Evans, the Senior National Co-ordinator of Counter Terrorism Policing, said: “Our investigations continue at pace, and we are continuing to identify and arrest suspects who we believe were involved, or planning, the recent arson attacks in north west London.", + "peopleInvolved": [ + "Vicki Evans: Official. Deputy Assistant Commissioner Vicki Evans, the Senior National Co-ordinator of Counter Terrorism Policing, said: “Our investigations continue at pace, and we are continuing to identify and arrest suspects who we believe were involved, or planning, the recent arson attacks in north west London." + ], + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/two-more-arrests-for-conspiracy-to-commit-arson-508544", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "incidentTrack": "case", + "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", + "queueReason": "Non-trigger source awaiting corroboration", + "queueBucket": "quarantine", + "time": "22 Apr 2026, 21:15", + "lat": 52.4862, + "lng": -1.8904, "major": false, - "publishedAt": "2026-04-15T16:09:32.000Z", + "publishedAt": "2026-04-22T20:15:00.000Z", "keywordHits": [ + "terrorism", + "attack", + "attacks", + "arrest", "arrested" ], "terrorismHits": [ - "terrorist" + "terrorism", + "counter terrorism" ], - "eventType": "context_update", - "geoPrecision": "country", - "isOfficial": false, - "priorityScore": 3.8, - "freshnessBucket": 3, - "freshUntil": "2026-04-19T16:09:32.000Z", + "eventType": "arrest", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 12.85, + "freshnessBucket": 2, + "freshUntil": "2026-05-06T20:15:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-598a019e6d315ccf", - "source": "BBC News - London RSS", - "sourceUrl": "https://www.bbc.com/news/articles/c1mkk4plgd4o?at_medium=RSS&at_campaign=rss", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-15T16:09:32.000Z", - "confidence": "Research or analytical source" + "fusedIncidentId": "fusion-eb23139c042e3c14", + "source": "Metropolitan Police Service a News", + "sourceUrl": "https://news.met.police.uk/news/two-more-arrests-for-conspiracy-to-commit-arson-508544", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-22T20:15:00.000Z", + "confidence": "Verified official source update" + }, + { + "fusedIncidentId": "fusion-eb23139c042e3c14", + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/two-more-arrests-for-conspiracy-to-commit-arson-508544", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-22T20:15:00.000Z", + "confidence": "Verified official source update" } ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-598a019e6d315ccf" + "corroborationCount": 2, + "isDuplicateOf": "fusion-eb23139c042e3c14" }, { - "id": "aljazeera-news-rss-0", - "fusedIncidentId": "fusion-7f5a1654ff85bd55", - "title": "French Court Rules Cement Giant Lafarge Guilty Of Funding Syrian Terrorism", - "location": "Europe", - "region": "international", - "lane": "context", - "severity": "moderate", - "status": "Update", - "actor": "Al Jazeera English a Top Stories (RSS)", - "subject": "Al Jazeera English a Top Stories (RSS)", - "happenedWhen": "13 Apr 2026, 19:52", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "Long running case regarding Lafarte's actions amid Syrian civil war sees company ordered to pay fine, executives jailed.", - "aiSummary": "Al Jazeera English a Top Stories (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Long running case regarding Lafarte's actions amid Syrian civil war sees company ordered to pay fine, executives jailed.", + "id": "met-police-latest-news-1", + "fusedIncidentId": "fusion-e180af3a10d4df62", + "title": "Fourth Person Charged After Golders Green Arson Attack", + "location": "Golders Green, London, UK", + "region": "london", + "lane": "incidents", + "severity": "critical", + "status": "Charged", + "actor": "Metropolitan Police - Latest News", + "subject": "Metropolitan Police - Latest News", + "happenedWhen": "17 Apr 2026, 19:00", + "confidence": "Verified official source update", + "confidenceScore": 0.92, + "summary": "News - 17 April 2026 19:00 Share A fourth person has been charged in connection with a Counter Terrorism Policing London investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green. Following authorisation from t", + "aiSummary": "News - 17 April 2026 19:00 Share A fourth person has been charged in connection with a Counter Terrorism Policing London investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green. Following authorisation from the Crown Prosecution Service [G] Judex Atshatshi 18 (24.11.07) a British national of Dagenham, has been charged with committing arson being reckless as to whether life would be endangered contrary to Section 1(2) – Criminal Damage Act 1971. He is due to appear at Westminster Magistrates' Court on Saturday, 18 April. Atshatshi was arrested on 16 April after counter terrorism detectives attended two addresses in east London. Another 18-year-old [H] arrested on the same day on suspicion of conspiracy to commit arson with intent to endanger life has been released on bail to a date in July. Three people have been previously been charged in connection with the incident. They will next appear at the Old Bailey on Friday 24 April.", + "sourceExtract": "News - 17 April 2026 19:00 Share A fourth person has been charged in connection with a Counter Terrorism Policing London investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green. Following authorisation from the Crown Prosecution Service [G] Judex Atshatshi 18 (24.11.07) a British national of Dagenham, has been charged with committing arson being reckless as to whether life would be endangered contrary to Section 1(2) – Criminal Damage Act 1971. He is due to appear at Westminster Magistrates' Court on Saturday, 18 April. Atshatshi was arrested on 16 April after counter terrorism detectives attended two addresses in east London. Another 18-year-old [H] arrested on the same day on suspicion of conspiracy to commit arson with intent to endanger life has been released on bail to a date in July. Three people have been previously been charged in connection with the incident. They will next appear at the Old Bailey on Friday 24 April.", "peopleInvolved": [], - "source": "Al Jazeera English a Top Stories (RSS)", - "sourceUrl": "https://www.aljazeera.com/news/2026/4/13/french-court-rules-cement-giant-lafarge-guilty-of-funding-syrian-terrorism?traffic_source=rss", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "13 Apr 2026, 19:52", - "lat": 54, - "lng": 15, + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/fourth-person-charged-after-golders-green-arson-attack-508390", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "incidentTrack": "case", + "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", + "queueReason": "Non-trigger source awaiting corroboration", + "queueBucket": "quarantine", + "time": "17 Apr 2026, 19:00", + "lat": 51.5722, + "lng": -0.1941, "major": false, - "publishedAt": "2026-04-13T18:52:20.000Z", + "publishedAt": "2026-04-17T18:00:00.000Z", "keywordHits": [ - "terrorism" + "terrorism", + "attack", + "arrested", + "charged", + "charged with" ], "terrorismHits": [ - "terrorism" + "terrorism", + "counter terrorism" ], - "eventType": "context_update", - "geoPrecision": "country", - "isOfficial": false, - "priorityScore": 3.8, - "freshnessBucket": 3, - "freshUntil": "2026-04-17T18:52:20.000Z", + "eventType": "charge", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 12.85, + "freshnessBucket": 2, + "freshUntil": "2026-05-01T18:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null - }, - { - "id": "telegraph-world-news-0", - "fusedIncidentId": "fusion-41911374c56f38ee", - "title": "What It’S Like To Be A Soldier Being Hunted By Drones In Ukraine", - "location": "Kyiv, Ukraine", - "region": "europe", - "lane": "context", - "severity": "moderate", - "status": "Update", - "actor": "The Telegraph a World News", - "subject": "The Telegraph a World News", - "happenedWhen": "13 Apr 2026, 17:12", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "The Telegraph experiences the terror of being pursued by deadly flying devices in a simulated kill zone Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Antonia Langford is a reporter based in Kyiv who covers Ukraine and Russ", - "aiSummary": "The Telegraph a World News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "The Telegraph experiences the terror of being pursued by deadly flying devices in a simulated kill zone Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Antonia Langford is a reporter based in Kyiv who covers Ukraine and Russia. She has also written for The Times, The Guardian and The i, among others. Antonia was shortlisted for Best Early Career Journalist in the Freelance Journalist Awards 2025.", - "peopleInvolved": [], - "source": "The Telegraph a World News", - "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/13/what-its-like-to-be-hunted-by-drones-in-ukraine/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "13 Apr 2026, 17:12", - "lat": 50.4501, - "lng": 30.5234, - "major": false, - "publishedAt": "2026-04-13T16:12:00.000Z", - "keywordHits": [ - "terror" - ], - "terrorismHits": [ - "terror" + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-e180af3a10d4df62", + "source": "Metropolitan Police Service a News", + "sourceUrl": "https://news.met.police.uk/news/fourth-person-charged-after-golders-green-arson-attack-508390", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-17T18:00:00.000Z", + "confidence": "Verified official source update" + }, + { + "fusedIncidentId": "fusion-e180af3a10d4df62", + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/fourth-person-charged-after-golders-green-arson-attack-508390", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-17T18:00:00.000Z", + "confidence": "Verified official source update" + } ], - "eventType": "context_update", - "geoPrecision": "region", - "isOfficial": false, - "priorityScore": 3.8, - "freshnessBucket": 3, - "freshUntil": "2026-04-17T16:12:00.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroborationCount": 2, + "isDuplicateOf": "fusion-e180af3a10d4df62" }, { - "id": "aljazeera-news-rss-0", - "fusedIncidentId": "fusion-effe8b4f6a0cb88c", - "title": "What Do We Know About Sea Mines In And Around The Strait Of Hormuz?", - "location": "Europe", - "region": "international", - "lane": "context", - "severity": "moderate", - "status": "Update", - "actor": "Al Jazeera English a Top Stories (RSS)", - "subject": "Al Jazeera English a Top Stories (RSS)", - "happenedWhen": "13 Apr 2026, 16:12", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "The psychological terror that the presence of sea mines can generate could paralyse the Strait of Hormuz.", - "aiSummary": "Al Jazeera English a Top Stories (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "The psychological terror that the presence of sea mines can generate could paralyse the Strait of Hormuz.", - "peopleInvolved": [], - "source": "Al Jazeera English a Top Stories (RSS)", - "sourceUrl": "https://www.aljazeera.com/economy/2026/4/13/what-do-we-know-about-sea-mines-in-and-around-the-strait-of-hormuz?traffic_source=rss", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "13 Apr 2026, 16:12", - "lat": 54, - "lng": 15, + "id": "met-police-news-2", + "fusedIncidentId": "fusion-2a41f036e061211e", + "title": "Statement On Recent Arson Attacks In North West London", + "location": "Golders Green, London, UK", + "region": "london", + "lane": "incidents", + "severity": "critical", + "status": "Charged", + "actor": "Metropolitan Police Service a News", + "subject": "Metropolitan Police Service a News", + "happenedWhen": "16 Apr 2026, 16:15", + "confidence": "Verified official source update", + "confidenceScore": 0.92, + "summary": "News - 16 April 2026 16:15 Share A statement from Deputy Commissioner Matt Jukes: \"Our colleagues in Counter Terrorism Policing are investigating three separate arson attacks in north west London, and multiple arrests have now been made in connection with all ", + "aiSummary": "News - 16 April 2026 16:15 Share A statement from Deputy Commissioner Matt Jukes: \"Our colleagues in Counter Terrorism Policing are investigating three separate arson attacks in north west London, and multiple arrests have now been made in connection with all three incidents. \"These incidents include the arson attack on volunteer‑led ambulances run by the Jewish community in Golders Green on Monday 23 March; an attempted arson attack at a synagogue in Finchley shortly after midnight on Wednesday 15 April; and an arson attack on the offices of a Persian‑language media organisation in north west London on the evening of Wednesday 15 April. \"During the latest incident at the Persian‑language media organisation, an ignited container was thrown towards the premises. It landed in a car park, where the fire quickly extinguished itself. Fortunately, there were no injuries and no damage reported. \"Officers responded immediately and three people - a 16-year-old male and two men, aged 19 and 21, were arrested quickly on suspicion of arson with intent to endanger life and remain in police custody. \"Following the attack on a synagogue in Finchley yesterday morning, two people – a 47-year-old woman and a 46-year-old man – have been arrested on suspicion of arson with intent to endanger life and remain in police custody while enquiries continue. \"In relation to the Golders Green attack, two further arrests have been made this morning bringing the total number of arrests to eight, with three people already charged.", + "sourceExtract": "News - 16 April 2026 16:15 Share A statement from Deputy Commissioner Matt Jukes: \"Our colleagues in Counter Terrorism Policing are investigating three separate arson attacks in north west London, and multiple arrests have now been made in connection with all three incidents. \"These incidents include the arson attack on volunteer‑led ambulances run by the Jewish community in Golders Green on Monday 23 March; an attempted arson attack at a synagogue in Finchley shortly after midnight on Wednesday 15 April; and an arson attack on the offices of a Persian‑language media organisation in north west London on the evening of Wednesday 15 April. \"During the latest incident at the Persian‑language media organisation, an ignited container was thrown towards the premises. It landed in a car park, where the fire quickly extinguished itself. Fortunately, there were no injuries and no damage reported. \"Officers responded immediately and three people - a 16-year-old male and two men, aged 19 and 21, were arrested quickly on suspicion of arson with intent to endanger life and remain in police custody. \"Following the attack on a synagogue in Finchley yesterday morning, two people – a 47-year-old woman and a 46-year-old man – have been arrested on suspicion of arson with intent to endanger life and remain in police custody while enquiries continue. \"In relation to the Golders Green attack, two further arrests have been made this morning bringing the total number of arrests to eight, with three people already charged. \"Separately we are aware of speculation about an incident at the Israeli Embassy in London yesterday. \"There has been no incident at that location, but we can confirm we have been liaising with security teams there in relation to their security. \"While none of these incident", + "peopleInvolved": [ + "Matt Jukes: Official. News - 16 April 2026 16:15 Share A statement from Deputy Commissioner Matt Jukes: \"Our colleagues in Counter Terrorism Policing are investigating three separate arson attacks in north west London, and multiple arrests have now been made in connection with all three incidents." + ], + "source": "Metropolitan Police Service a News", + "sourceUrl": "https://news.met.police.uk/news/statement-on-recent-arson-attacks-in-north-west-london-508347", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "incidentTrack": "case", + "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", + "queueReason": "Non-trigger source awaiting corroboration", + "queueBucket": "quarantine", + "time": "16 Apr 2026, 16:15", + "lat": 51.5722, + "lng": -0.1941, "major": false, - "publishedAt": "2026-04-13T15:12:25.000Z", + "publishedAt": "2026-04-16T15:15:00.000Z", "keywordHits": [ - "terror" + "terrorism", + "attack", + "attacks", + "arrested", + "charged" ], "terrorismHits": [ - "terror" + "terrorism", + "counter terrorism" ], - "eventType": "context_update", - "geoPrecision": "country", - "isOfficial": false, - "priorityScore": 3.8, - "freshnessBucket": 3, - "freshUntil": "2026-04-17T15:12:25.000Z", + "eventType": "charge", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 12.85, + "freshnessBucket": 2, + "freshUntil": "2026-04-30T15:15:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-2a41f036e061211e", + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/statement-on-recent-arson-attacks-in-north-west-london-508347", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-16T15:15:00.000Z", + "confidence": "Verified official source update" + }, + { + "fusedIncidentId": "fusion-2a41f036e061211e", + "source": "Metropolitan Police Service a News", + "sourceUrl": "https://news.met.police.uk/news/statement-on-recent-arson-attacks-in-north-west-london-508347", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-16T15:15:00.000Z", + "confidence": "Verified official source update" + } + ], + "corroborationCount": 2, + "isDuplicateOf": "fusion-2a41f036e061211e" }, { - "id": "aljazeera-news-rss-0", - "fusedIncidentId": "fusion-b7a05b808b258f59", - "title": "Cement Company Lafarge Found Guilty In Syria Terrorism Financing Case", - "location": "Europe", - "region": "international", - "lane": "context", - "severity": "moderate", - "status": "Update", - "actor": "Al Jazeera English a Top Stories (RSS)", - "subject": "Al Jazeera English a Top Stories (RSS)", - "happenedWhen": "13 Apr 2026, 13:18", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "A French court has found cement company Lafarge guilty of financing armed groups during the Syrian war.", - "aiSummary": "Al Jazeera English a Top Stories (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "A French court has found cement company Lafarge guilty of financing armed groups during the Syrian war.", + "id": "met-police-latest-news-0", + "fusedIncidentId": "fusion-3b3482fa7981c0b9", + "title": "Further Arrest Made In Relation To Golders Green Arson Attack", + "location": "Golders Green, London, UK", + "region": "london", + "lane": "incidents", + "severity": "critical", + "status": "Charged", + "actor": "Metropolitan Police - Latest News", + "subject": "Metropolitan Police - Latest News", + "happenedWhen": "04 Apr 2026, 15:07", + "confidence": "Verified official source update", + "confidenceScore": 0.92, + "summary": "News - 4 April 2026 15:07 Share A further arrest has been made in connection with a Counter Terrorism Policing investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green. On the morning of Saturday, 4 April, Met", + "aiSummary": "News - 4 April 2026 15:07 Share A further arrest has been made in connection with a Counter Terrorism Policing investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green. On the morning of Saturday, 4 April, Met officers at Westminster Magistrates' Court arrested a 19-year-old man [F] in relation to the ongoing investigation into an arson attack in Golders Green. While attending the hearing of three other suspects, officers recognised the man as being involved in the arson attack. He was arrested for arson with intent to endanger life and taken into custody. Three other people have been charged in connection with the incident: [C] Hamza Iqbal 20 (28.10.05) and [D] Rehan Khan 19 (11.02.07), both British nationals from Leyton, and [E] a 17-year-old boy, a dual British and Pakistani national from Walthamstow, were charged on Friday, 3 April with arson being reckless as to whether life would be endangered contrary to Section 1(2) – Criminal Damage Act 1971. They appeared at Westminster Magistrates’ Court on Saturday, 4 April where they were remanded in custody to appear at the Old Bailey on Friday, 24 April. They were arrested on Wednesday, 1 April at different locations in east London and officers from Counter Terrorism Policing London have carried out searches at these addresses. The arrests and charges are linked to the ongoing investigation into an arson attack at approximately 01:35hrs on Monday, 23 March.", + "sourceExtract": "News - 4 April 2026 15:07 Share A further arrest has been made in connection with a Counter Terrorism Policing investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green. On the morning of Saturday, 4 April, Met officers at Westminster Magistrates' Court arrested a 19-year-old man [F] in relation to the ongoing investigation into an arson attack in Golders Green. While attending the hearing of three other suspects, officers recognised the man as being involved in the arson attack. He was arrested for arson with intent to endanger life and taken into custody. Three other people have been charged in connection with the incident: [C] Hamza Iqbal 20 (28.10.05) and [D] Rehan Khan 19 (11.02.07), both British nationals from Leyton, and [E] a 17-year-old boy, a dual British and Pakistani national from Walthamstow, were charged on Friday, 3 April with arson being reckless as to whether life would be endangered contrary to Section 1(2) – Criminal Damage Act 1971. They appeared at Westminster Magistrates’ Court on Saturday, 4 April where they were remanded in custody to appear at the Old Bailey on Friday, 24 April. They were arrested on Wednesday, 1 April at different locations in east London and officers from Counter Terrorism Policing London have carried out searches at these addresses. The arrests and charges are linked to the ongoing investigation into an arson attack at approximately 01:35hrs on Monday, 23 March. Four ambulances from Hatzola, a volunteer-led ambulance service operating in the Golders Green area of north London, were set on fire during the incident. Two other men [A and B] were also previously arrested on Wednesday, 25 March, and they have both been released on bail to a date in late-April, pending further enqui", "peopleInvolved": [], - "source": "Al Jazeera English a Top Stories (RSS)", - "sourceUrl": "https://www.aljazeera.com/video/newsfeed/2026/4/13/cement-company-lafarge-found-guilty-in-syria-terrorism-financing-case?traffic_source=rss", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "13 Apr 2026, 13:18", - "lat": 54, - "lng": 15, + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/further-arrest-made-in-relation-to-golders-green-arson-attack-507957", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "incidentTrack": "case", + "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", + "queueReason": "Non-trigger source awaiting corroboration", + "time": "04 Apr 2026, 15:07", + "lat": 51.5722, + "lng": -0.1941, "major": false, - "publishedAt": "2026-04-13T12:18:27.000Z", + "publishedAt": "2026-04-04T14:07:00.000Z", "keywordHits": [ - "terrorism" + "terrorism", + "attack", + "arrest", + "arrested", + "charged" ], "terrorismHits": [ - "terrorism" + "terrorism", + "counter terrorism" ], - "eventType": "context_update", - "geoPrecision": "country", - "isOfficial": false, - "priorityScore": 3.8, - "freshnessBucket": 3, - "freshUntil": "2026-04-17T12:18:27.000Z", + "eventType": "charge", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 12.85, + "freshnessBucket": 2, + "freshUntil": "2026-04-18T14:07:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-b7a05b808b258f59", - "source": "Al Jazeera English a Top Stories (RSS)", - "sourceUrl": "https://www.aljazeera.com/video/newsfeed/2026/4/13/cement-company-lafarge-found-guilty-in-syria-terrorism-financing-case?traffic_source=rss", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-13T12:18:27.000Z", - "confidence": "Research or analytical source" + "fusedIncidentId": "fusion-3b3482fa7981c0b9", + "source": "Metropolitan Police Service a News", + "sourceUrl": "https://news.met.police.uk/news/further-arrest-made-in-relation-to-golders-green-arson-attack-507957", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-04T14:07:00.000Z", + "confidence": "Verified official source update" + }, + { + "fusedIncidentId": "fusion-3b3482fa7981c0b9", + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/further-arrest-made-in-relation-to-golders-green-arson-attack-507957", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-04T14:07:00.000Z", + "confidence": "Verified official source update" } ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-b7a05b808b258f59" - }, - { - "id": "euronews-europe-0", - "fusedIncidentId": "fusion-6547a22c4ea82ed1", - "title": "Pope Leo XIV Says 'Enough Of The Idolatry' As He Grows Increasingly Frustrated Over War", - "location": "Tehran, Iran", - "region": "europe", - "lane": "context", - "severity": "moderate", - "status": "Update", - "actor": "Euronews a Europe", - "subject": "Euronews a Europe", - "happenedWhen": "11 Apr 2026, 21:18", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "Pope Leo XIV did not hold back on Saturday as he denounced the “delusion of omnipotence” that is powering the US-Israel war on Iran and urges political leaders to stop and engage in peace processes. All while, the US and Iran entered peace negotiations in Paki", - "aiSummary": "Euronews a Europe has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Pope Leo XIV did not hold back on Saturday as he denounced the “delusion of omnipotence” that is powering the US-Israel war on Iran and urges political leaders to stop and engage in peace processes. All while, the US and Iran entered peace negotiations in Pakistan. During an evening prayer in St. Peter's Basilica Pope Leo XIV did not mention the US nor did he mention US President Donald Trump, however, his tone and message appeared directed at US officials and Trump, who have bragged of their military superiority and justified the war using religion. “Enough of the idolatry of self and money!” Leo said. “Enough of the display of power! Enough of war!” The US Military Religious Freedom Foundation (MRFF) announced on 3 March 2026 that it had received more than 200 complaints from military personnel from various branches of the armed forces - including the Marines, Air Force and Space Force - accusing their commanders of using extremist Christian rhetoric to justify war against Iran. Among those in the basilica was the archbishop of Tehran, Dominique Joseph Mathieu. The United States was represented by Laura Hochla, the deputy chief of mission, the US Embassy said. US-born Pope Leo XIV had initially been reluctant about openly criticising the war, however, he stepped up his criticism starting on Palm Sunday. Earlier this week, he condemned Trump's threats to annihilate Iranian civilisation calling them \"truly unacceptable\" and pushed for dialogue to be prioritised. On Saturday, the pontiff called for all people of good will to pray for peace and demand an end to war from their political leaders. Praying for peace, Pope Leo XIV said, was a way to “break the demonic cycle of evil” to build instead the Kingdom of God where there are no swords, drones or “unjust profit.” “It i", - "peopleInvolved": [], - "source": "Euronews a Europe", - "sourceUrl": "https://www.euronews.com/my-europe/2026/04/11/pope-leo-xiv-says-enough-of-the-idolatry-as-he-grows-increasingly-frustrated-over-war", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "11 Apr 2026, 21:18", - "lat": 35.6892, - "lng": 51.389, - "major": false, - "publishedAt": "2026-04-11T20:18:47.000Z", - "keywordHits": [ - "extremist" - ], - "terrorismHits": [ - "extremist" - ], - "eventType": "context_update", - "geoPrecision": "region", - "isOfficial": false, - "priorityScore": 3.8, - "freshnessBucket": 3, - "freshUntil": "2026-04-15T20:18:47.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-6547a22c4ea82ed1", - "source": "Euronews a Europe", - "sourceUrl": "https://www.euronews.com/my-europe/2026/04/11/pope-leo-xiv-says-enough-of-the-idolatry-as-he-grows-increasingly-frustrated-over-war", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-11T20:18:47.000Z", - "confidence": "Research or analytical source" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-6547a22c4ea82ed1" - }, - { - "id": "the-week-uk-0", - "fusedIncidentId": "fusion-7d73e6f4a234ac55", - "title": "764: The Online Extremist Group Targeting Kids Nationwide", - "location": "United Kingdom", - "region": "uk", - "lane": "context", - "severity": "moderate", - "status": "Update", - "actor": "The Week UK", - "subject": "The Week UK", - "happenedWhen": "16 Apr 2026, 17:28", - "confidence": "Secondary source signal", - "confidenceScore": 0.6, - "summary": "The FBI has urged parents to be vigilant", - "aiSummary": "The Week UK has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "The FBI has urged parents to be vigilant", - "peopleInvolved": [], - "source": "The Week UK", - "sourceUrl": "https://theweek.com/crime/764-online-extremist-group-targeting-kids", - "sourceTier": "corroboration", - "reliabilityProfile": "general_media", - "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "16 Apr 2026, 17:28", - "lat": 54.5, - "lng": -2.5, - "major": false, - "publishedAt": "2026-04-16T16:28:41.000Z", - "keywordHits": [ - "extremist" - ], - "terrorismHits": [ - "extremist" - ], - "eventType": "context_update", - "geoPrecision": "country", - "isOfficial": false, - "priorityScore": 3.45, - "freshnessBucket": 3, - "freshUntil": "2026-04-20T16:28:41.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-7d73e6f4a234ac55", - "source": "The Week UK", - "sourceUrl": "https://theweek.com/crime/764-online-extremist-group-targeting-kids", - "sourceTier": "corroboration", - "reliabilityProfile": "general_media", - "publishedAt": "2026-04-16T16:28:41.000Z", - "confidence": "Secondary source signal" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-7d73e6f4a234ac55" - }, - { - "id": "deadline-news-0", - "fusedIncidentId": "fusion-8d93646fd8c366ac", - "title": "Swinney Urges Nation To Unite Against “Extremist” Reform", - "location": "Scotland, UK", - "region": "uk", - "lane": "context", - "severity": "moderate", - "status": "Update", - "actor": "Deadline News", - "subject": "Deadline News", - "happenedWhen": "13 Apr 2026, 11:04", - "confidence": "Secondary source signal", - "confidenceScore": 0.6, - "summary": "JOHN Swinney, Scotland’s First Minister, has described Reform UK’s Nigel Farage as a “right-wing extremist” and Scots to unite behind the SNP against the right-wing party.  Swinney claimed that an SNP majority is the only way to e", - "aiSummary": "Deadline News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "JOHN Swinney, Scotland’s First Minister, has described Reform UK’s Nigel Farage as a “right-wing extremist” and Scots to unite behind the SNP against the right-wing party.  Swinney claimed that an SNP majority is the only way to ensure that Reform UK are “locked out” of power.  He said that Anas Sarwar, the Scottish Labour leader, will seek to “force” his way into power […] The post Swinney urges nation to unite against “extremist” Reform appeared first on Deadline News .", - "peopleInvolved": [], - "source": "Deadline News", - "sourceUrl": "https://www.deadlinenews.co.uk/2026/04/13/swinney-urges-nation-to-unite-against-extremist-reform/", - "sourceTier": "context", - "reliabilityProfile": "general_media", - "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "13 Apr 2026, 11:04", - "lat": 56.4907, - "lng": -4.2026, - "major": false, - "publishedAt": "2026-04-13T10:04:59.000Z", - "keywordHits": [ - "extremist" - ], - "terrorismHits": [ - "extremist" - ], - "eventType": "context_update", - "geoPrecision": "region", - "isOfficial": false, - "priorityScore": 3.45, - "freshnessBucket": 3, - "freshUntil": "2026-04-17T10:04:59.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-8d93646fd8c366ac", - "source": "Deadline News", - "sourceUrl": "https://www.deadlinenews.co.uk/2026/04/13/swinney-urges-nation-to-unite-against-extremist-reform/", - "sourceTier": "context", - "reliabilityProfile": "general_media", - "publishedAt": "2026-04-13T10:04:59.000Z", - "confidence": "Secondary source signal" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-8d93646fd8c366ac" + "corroborationCount": 2, + "isDuplicateOf": "fusion-3b3482fa7981c0b9" }, { - "id": "met-police-latest-news-0", - "fusedIncidentId": "fusion-eb23139c042e3c14", - "title": "UPDATED: Two More Arrests For Conspiracy To Commit Arson", - "location": "Birmingham, UK", + "id": "met-police-latest-news-3", + "fusedIncidentId": "fusion-a518885afbf6dad2", + "title": "Three Arrested Following Attempted Arson Attack In Wembley", + "location": "Golders Green, London, UK", "region": "london", "lane": "incidents", "severity": "critical", "status": "Arrest", "actor": "Metropolitan Police - Latest News", "subject": "Metropolitan Police - Latest News", - "happenedWhen": "22 Apr 2026, 21:15", + "happenedWhen": "16 Apr 2026, 14:05", "confidence": "Verified official source update", - "confidenceScore": 0.92, - "summary": "News - 22 April 2026 21:15 Share Two more arrests have been made by Counter Terrorism Policing (CTP) officers investigating an alleged conspiracy to commit arson at a venue related to the Jewish community. A total of nine people have now been arrested during t", - "aiSummary": "News - 22 April 2026 21:15 Share Two more arrests have been made by Counter Terrorism Policing (CTP) officers investigating an alleged conspiracy to commit arson at a venue related to the Jewish community. A total of nine people have now been arrested during the past three days as part of a proactive investigation. Those arrested are suspected of being involved in planning an arson attack at an unknown venue related to the Jewish community. The latest two arrests include [H] a 19-year-old man and [I] a 26-year-old man arrested in Watford on Tuesday, 21 April. They were both taken into custody, before being released on bail. Seven other people previously arrested for conspiracy to commit arson remain under investigation and have been released on bail, with strict conditions. They include: - Three men - [A] aged 24, [B] aged 25 and [C] aged 26 - arrested in Harpenden shortly after 21.00hrs on 19 April. - [D] A 25-year-old man arrested in Stevenage on 20 April.", - "sourceExtract": "News - 22 April 2026 21:15 Share Two more arrests have been made by Counter Terrorism Policing (CTP) officers investigating an alleged conspiracy to commit arson at a venue related to the Jewish community. A total of nine people have now been arrested during the past three days as part of a proactive investigation. Those arrested are suspected of being involved in planning an arson attack at an unknown venue related to the Jewish community. The latest two arrests include [H] a 19-year-old man and [I] a 26-year-old man arrested in Watford on Tuesday, 21 April. They were both taken into custody, before being released on bail. Seven other people previously arrested for conspiracy to commit arson remain under investigation and have been released on bail, with strict conditions. They include: - Three men - [A] aged 24, [B] aged 25 and [C] aged 26 - arrested in Harpenden shortly after 21.00hrs on 19 April. - [D] A 25-year-old man arrested in Stevenage on 20 April. - [E] A 26-year-old man, and two women, [F] aged 50 and [G] 59, arrested in a car near Birmingham on 20 April. Deputy Assistant Commissioner Vicki Evans, the Senior National Co-ordinator of Counter Terrorism Policing, said: “Our investigations continue at pace, and we are continuing to identify and arrest suspects who we believe were involved, or planning, the recent arson attacks in north west London.", - "peopleInvolved": [ - "Vicki Evans: Official. Deputy Assistant Commissioner Vicki Evans, the Senior National Co-ordinator of Counter Terrorism Policing, said: “Our investigations continue at pace, and we are continuing to identify and arrest suspects who we believe were involved, or planning, the recent arson attacks in north west London." - ], + "confidenceScore": 0.9, + "summary": "News - 16 April 2026 14:05 Share Three men have been arrested following an attempted arson attack on the offices of a Persian language media organisation in north-west London. At around 20:30hrs on Wednesday, 15 April, officers on proactive patrols in Wembley ", + "aiSummary": "News - 16 April 2026 14:05 Share Three men have been arrested following an attempted arson attack on the offices of a Persian language media organisation in north-west London. At around 20:30hrs on Wednesday, 15 April, officers on proactive patrols in Wembley were made aware that an ignited container had been thrown towards the premises. The container landed in a car park, where the fire immediately put itself out. No damage was reported and there were no injuries. Urgent enquiries were carried out and it was established that the suspects had left the area in a black SUV. An Armed Response Vehicle (ARV), which was in the area, quickly located a vehicle matching the description and began a pursuit when the driver failed to stop for police. It later crashed on Ballards Lane, close to the junction with Woodberry Gardens, N12. A boy aged 16 and two men aged 19 and 21 were arrested on suspicion of arson endangering life and taken into police custody where they remain.", + "sourceExtract": "News - 16 April 2026 14:05 Share Three men have been arrested following an attempted arson attack on the offices of a Persian language media organisation in north-west London. At around 20:30hrs on Wednesday, 15 April, officers on proactive patrols in Wembley were made aware that an ignited container had been thrown towards the premises. The container landed in a car park, where the fire immediately put itself out. No damage was reported and there were no injuries. Urgent enquiries were carried out and it was established that the suspects had left the area in a black SUV. An Armed Response Vehicle (ARV), which was in the area, quickly located a vehicle matching the description and began a pursuit when the driver failed to stop for police. It later crashed on Ballards Lane, close to the junction with Woodberry Gardens, N12. A boy aged 16 and two men aged 19 and 21 were arrested on suspicion of arson endangering life and taken into police custody where they remain. A number of buildings nearby were evacuated as a precaution, although it was quickly established there was no wider risk. The attack is not being treated as a terrorist incident but is being investigated by detectives from Counter Terrorism Policing London, supported by officers from the North West Command Area. At this stage, it is not being linked to the attempted arson in Finchley this week or last month’s arson in Golders Green.", + "peopleInvolved": [], "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/two-more-arrests-for-conspiracy-to-commit-arson-508544", + "sourceUrl": "https://news.met.police.uk/news/three-arrested-following-attempted-arson-attack-in-wembley-508338", "sourceTier": "corroboration", "reliabilityProfile": "official_general", "incidentTrack": "case", "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", "queueReason": "Non-trigger source awaiting corroboration", "queueBucket": "quarantine", - "time": "22 Apr 2026, 21:15", - "lat": 52.4862, - "lng": -1.8904, + "time": "16 Apr 2026, 14:05", + "lat": 51.5722, + "lng": -0.1941, "major": false, - "publishedAt": "2026-04-22T20:15:00.000Z", + "publishedAt": "2026-04-16T13:05:42.000Z", "keywordHits": [ "terrorism", "attack", - "attacks", - "arrest", "arrested" ], "terrorismHits": [ "terrorism", - "counter terrorism" + "counter terrorism", + "terrorist" ], "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 12.85, + "priorityScore": 11.65, "freshnessBucket": 2, - "freshUntil": "2026-05-06T20:15:00.000Z", + "freshUntil": "2026-04-30T13:05:42.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-eb23139c042e3c14", + "fusedIncidentId": "fusion-a518885afbf6dad2", "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/two-more-arrests-for-conspiracy-to-commit-arson-508544", + "sourceUrl": "https://news.met.police.uk/news/three-arrested-following-attempted-arson-attack-in-wembley-508338", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-22T20:15:00.000Z", + "publishedAt": "2026-04-16T13:05:42.000Z", "confidence": "Verified official source update" }, { - "fusedIncidentId": "fusion-eb23139c042e3c14", + "fusedIncidentId": "fusion-a518885afbf6dad2", "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/two-more-arrests-for-conspiracy-to-commit-arson-508544", + "sourceUrl": "https://news.met.police.uk/news/three-arrested-following-attempted-arson-attack-in-wembley-508338", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-22T20:15:00.000Z", + "publishedAt": "2026-04-16T13:05:42.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 2, - "isDuplicateOf": "fusion-eb23139c042e3c14" + "isDuplicateOf": "fusion-a518885afbf6dad2" }, { - "id": "met-police-latest-news-1", - "fusedIncidentId": "fusion-e180af3a10d4df62", - "title": "Fourth Person Charged After Golders Green Arson Attack", + "id": "met-police-latest-news-0", + "fusedIncidentId": "fusion-917924b97a959bd6", + "title": "Investigation Launched After Attempted Arson Attack In Finchley", "location": "Golders Green, London, UK", "region": "london", "lane": "incidents", "severity": "critical", - "status": "Charged", + "status": "Arrest", "actor": "Metropolitan Police - Latest News", "subject": "Metropolitan Police - Latest News", - "happenedWhen": "17 Apr 2026, 19:00", + "happenedWhen": "15 Apr 2026, 13:56", "confidence": "Verified official source update", - "confidenceScore": 0.92, - "summary": "News - 17 April 2026 19:00 Share A fourth person has been charged in connection with a Counter Terrorism Policing London investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green. Following authorisation from t", - "aiSummary": "News - 17 April 2026 19:00 Share A fourth person has been charged in connection with a Counter Terrorism Policing London investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green. Following authorisation from the Crown Prosecution Service [G] Judex Atshatshi 18 (24.11.07) a British national of Dagenham, has been charged with committing arson being reckless as to whether life would be endangered contrary to Section 1(2) – Criminal Damage Act 1971. He is due to appear at Westminster Magistrates' Court on Saturday, 18 April. Atshatshi was arrested on 16 April after counter terrorism detectives attended two addresses in east London. Another 18-year-old [H] arrested on the same day on suspicion of conspiracy to commit arson with intent to endanger life has been released on bail to a date in July. Three people have been previously been charged in connection with the incident. They will next appear at the Old Bailey on Friday 24 April.", - "sourceExtract": "News - 17 April 2026 19:00 Share A fourth person has been charged in connection with a Counter Terrorism Policing London investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green. Following authorisation from the Crown Prosecution Service [G] Judex Atshatshi 18 (24.11.07) a British national of Dagenham, has been charged with committing arson being reckless as to whether life would be endangered contrary to Section 1(2) – Criminal Damage Act 1971. He is due to appear at Westminster Magistrates' Court on Saturday, 18 April. Atshatshi was arrested on 16 April after counter terrorism detectives attended two addresses in east London. Another 18-year-old [H] arrested on the same day on suspicion of conspiracy to commit arson with intent to endanger life has been released on bail to a date in July. Three people have been previously been charged in connection with the incident. They will next appear at the Old Bailey on Friday 24 April.", + "confidenceScore": 0.9, + "summary": "News - 15 April 2026 13:56 Share Detectives are appealing for witnesses to come forward following an attempted arson attack on a synagogue in Finchley. The incident is being treated as an antisemitic hate crime. Two suspects, who were wearing dark clothing and", + "aiSummary": "News - 15 April 2026 13:56 Share Detectives are appealing for witnesses to come forward following an attempted arson attack on a synagogue in Finchley. The incident is being treated as an antisemitic hate crime. Two suspects, who were wearing dark clothing and balaclavas, approached the synagogue in Fallow Court Avenue, Finchley shortly after midnight, 00:00hrs, on Wednesday, 15 April and threw two bottles, suspected to contain petrol, and a brick at the building. Neither bottle ignited and no damage was reported. There were no injuries. The matter was reported by staff to police at 08:30hrs. Officers are conducting urgent enquiries to trace the suspects. No arrests have been made at this early stage.", + "sourceExtract": "News - 15 April 2026 13:56 Share Detectives are appealing for witnesses to come forward following an attempted arson attack on a synagogue in Finchley. The incident is being treated as an antisemitic hate crime. Two suspects, who were wearing dark clothing and balaclavas, approached the synagogue in Fallow Court Avenue, Finchley shortly after midnight, 00:00hrs, on Wednesday, 15 April and threw two bottles, suspected to contain petrol, and a brick at the building. Neither bottle ignited and no damage was reported. There were no injuries. The matter was reported by staff to police at 08:30hrs. Officers are conducting urgent enquiries to trace the suspects. No arrests have been made at this early stage. The incident is being investigated by detectives from the Met’s North West Command Unit, with support from specialist detectives from Counter Terrorism Policing London. Detective Chief Superintendent Luke Williams, who leads policing in the area, said: “We are aware of the significant concern that this incident will cause in the community, particularly in the wake of the arson attack in Golders Green last month. We are working with the affected synagogue and continuing to meet with community leaders. “I would like to reassure the community that we take incidents of this nature extremely seriously and detectives are working urgently to identify the suspects.", "peopleInvolved": [], "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/fourth-person-charged-after-golders-green-arson-attack-508390", + "sourceUrl": "https://news.met.police.uk/news/investigation-launched-after-attempted-arson-attack-in-finchley-508283", "sourceTier": "corroboration", "reliabilityProfile": "official_general", "incidentTrack": "case", "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", "queueReason": "Non-trigger source awaiting corroboration", "queueBucket": "quarantine", - "time": "17 Apr 2026, 19:00", + "time": "15 Apr 2026, 13:56", "lat": 51.5722, "lng": -0.1941, "major": false, - "publishedAt": "2026-04-17T18:00:00.000Z", + "publishedAt": "2026-04-15T12:56:00.000Z", "keywordHits": [ "terrorism", - "attack", - "arrested", - "charged", - "charged with" + "attack" ], "terrorismHits": [ "terrorism", "counter terrorism" ], - "eventType": "charge", + "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 12.85, + "priorityScore": 11.05, "freshnessBucket": 2, - "freshUntil": "2026-05-01T18:00:00.000Z", + "freshUntil": "2026-04-29T12:56:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-e180af3a10d4df62", + "fusedIncidentId": "fusion-917924b97a959bd6", "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/fourth-person-charged-after-golders-green-arson-attack-508390", + "sourceUrl": "https://news.met.police.uk/news/investigation-launched-after-attempted-arson-attack-in-finchley-508283", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-17T18:00:00.000Z", + "publishedAt": "2026-04-15T12:56:00.000Z", "confidence": "Verified official source update" }, { - "fusedIncidentId": "fusion-e180af3a10d4df62", + "fusedIncidentId": "fusion-917924b97a959bd6", "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/fourth-person-charged-after-golders-green-arson-attack-508390", + "sourceUrl": "https://news.met.police.uk/news/investigation-launched-after-attempted-arson-attack-in-finchley-508283", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-17T18:00:00.000Z", + "publishedAt": "2026-04-15T12:56:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 2, - "isDuplicateOf": "fusion-e180af3a10d4df62" + "isDuplicateOf": "fusion-917924b97a959bd6" }, { - "id": "met-police-news-2", - "fusedIncidentId": "fusion-2a41f036e061211e", - "title": "Statement On Recent Arson Attacks In North West London", - "location": "Golders Green, London, UK", + "id": "met-police-latest-news-0", + "fusedIncidentId": "fusion-e943bb1c0fe3abd0", + "title": "Man Charged With Offences Linked To Terrorist Group In Somalia", + "location": "Westminster, London, UK", "region": "london", "lane": "incidents", - "severity": "critical", + "severity": "high", "status": "Charged", - "actor": "Metropolitan Police Service a News", - "subject": "Metropolitan Police Service a News", - "happenedWhen": "16 Apr 2026, 16:15", + "actor": "Metropolitan Police - Latest News", + "subject": "Metropolitan Police - Latest News", + "happenedWhen": "09 Apr 2026, 08:45", "confidence": "Verified official source update", - "confidenceScore": 0.92, - "summary": "News - 16 April 2026 16:15 Share A statement from Deputy Commissioner Matt Jukes: \"Our colleagues in Counter Terrorism Policing are investigating three separate arson attacks in north west London, and multiple arrests have now been made in connection with all ", - "aiSummary": "News - 16 April 2026 16:15 Share A statement from Deputy Commissioner Matt Jukes: \"Our colleagues in Counter Terrorism Policing are investigating three separate arson attacks in north west London, and multiple arrests have now been made in connection with all three incidents. \"These incidents include the arson attack on volunteer‑led ambulances run by the Jewish community in Golders Green on Monday 23 March; an attempted arson attack at a synagogue in Finchley shortly after midnight on Wednesday 15 April; and an arson attack on the offices of a Persian‑language media organisation in north west London on the evening of Wednesday 15 April. \"During the latest incident at the Persian‑language media organisation, an ignited container was thrown towards the premises. It landed in a car park, where the fire quickly extinguished itself. Fortunately, there were no injuries and no damage reported. \"Officers responded immediately and three people - a 16-year-old male and two men, aged 19 and 21, were arrested quickly on suspicion of arson with intent to endanger life and remain in police custody. \"Following the attack on a synagogue in Finchley yesterday morning, two people – a 47-year-old woman and a 46-year-old man – have been arrested on suspicion of arson with intent to endanger life and remain in police custody while enquiries continue. \"In relation to the Golders Green attack, two further arrests have been made this morning bringing the total number of arrests to eight, with three people already charged.", - "sourceExtract": "News - 16 April 2026 16:15 Share A statement from Deputy Commissioner Matt Jukes: \"Our colleagues in Counter Terrorism Policing are investigating three separate arson attacks in north west London, and multiple arrests have now been made in connection with all three incidents. \"These incidents include the arson attack on volunteer‑led ambulances run by the Jewish community in Golders Green on Monday 23 March; an attempted arson attack at a synagogue in Finchley shortly after midnight on Wednesday 15 April; and an arson attack on the offices of a Persian‑language media organisation in north west London on the evening of Wednesday 15 April. \"During the latest incident at the Persian‑language media organisation, an ignited container was thrown towards the premises. It landed in a car park, where the fire quickly extinguished itself. Fortunately, there were no injuries and no damage reported. \"Officers responded immediately and three people - a 16-year-old male and two men, aged 19 and 21, were arrested quickly on suspicion of arson with intent to endanger life and remain in police custody. \"Following the attack on a synagogue in Finchley yesterday morning, two people – a 47-year-old woman and a 46-year-old man – have been arrested on suspicion of arson with intent to endanger life and remain in police custody while enquiries continue. \"In relation to the Golders Green attack, two further arrests have been made this morning bringing the total number of arrests to eight, with three people already charged. \"Separately we are aware of speculation about an incident at the Israeli Embassy in London yesterday. \"There has been no incident at that location, but we can confirm we have been liaising with security teams there in relation to their security. \"While none of these incident", + "confidenceScore": 0.88, + "summary": "News - 9 April 2026 08:45 Share A British man has been charged with offences linked to an Islamist terrorist group based in Somalia after an investigation by Counter Terrorism Policing London.Jermaine Grant 43 (20.10.82) of no fixed address, has been charged, ", + "aiSummary": "News - 9 April 2026 08:45 Share A British man has been charged with offences linked to an Islamist terrorist group based in Somalia after an investigation by Counter Terrorism Policing London.Jermaine Grant 43 (20.10.82) of no fixed address, has been charged, following authorisation from the Crown Prosecution Service (CPS), with directing the activities of a terrorist organisation, namely Al-Shabaab, contrary to Section 56 of the Terrorism Act 2000. He has also been charged with three counts of attending an Al-Shabaab commando training camp in Kismayu in Somalia, contrary to Section 8 of the Terrorism Act 2006 and two counts of possession of an article (AK47) for terrorist purposes, contrary to Section 57 of the Terrorism Act 2000.The charges relate to a time between 31 December 2007 and 1 January 2010 when Al-Shabaab was operating in Somalia.Grant is due to appear at Westminster Magistrates’ Court on Thursday, 9 April.Acting Commander Kris Wright, of CTP London, said: “These are serious charges and come as the result of a long-running investigation.“This case shows we will always pursue anyone suspected of being involved in terrorist activity, no matter where in the world or how long ago it is alleged to have taken place.”", + "sourceExtract": "News - 9 April 2026 08:45 Share A British man has been charged with offences linked to an Islamist terrorist group based in Somalia after an investigation by Counter Terrorism Policing London.Jermaine Grant 43 (20.10.82) of no fixed address, has been charged, following authorisation from the Crown Prosecution Service (CPS), with directing the activities of a terrorist organisation, namely Al-Shabaab, contrary to Section 56 of the Terrorism Act 2000. He has also been charged with three counts of attending an Al-Shabaab commando training camp in Kismayu in Somalia, contrary to Section 8 of the Terrorism Act 2006 and two counts of possession of an article (AK47) for terrorist purposes, contrary to Section 57 of the Terrorism Act 2000.The charges relate to a time between 31 December 2007 and 1 January 2010 when Al-Shabaab was operating in Somalia.Grant is due to appear at Westminster Magistrates’ Court on Thursday, 9 April.Acting Commander Kris Wright, of CTP London, said: “These are serious charges and come as the result of a long-running investigation.“This case shows we will always pursue anyone suspected of being involved in terrorist activity, no matter where in the world or how long ago it is alleged to have taken place.”", "peopleInvolved": [ - "Matt Jukes: Official. News - 16 April 2026 16:15 Share A statement from Deputy Commissioner Matt Jukes: \"Our colleagues in Counter Terrorism Policing are investigating three separate arson attacks in north west London, and multiple arrests have now been made in connection with all three incidents." + "Kris Wright: Official. He has also been charged with three counts of attending an Al-Shabaab commando training camp in Kismayu in Somalia, contrary to Section 8 of the Terrorism Act 2006 and two counts of possession of an article (AK47) for terrorist purposes, contrary to Section 57 of the Terrorism Act 2000.The charges relate to a time between 31 December 2007 and 1 January 2010 when Al-Shabaab was operating in Somalia.Grant is due to appear at Westminster Magistrates’ Court on Thursday, 9 April.Acting Commander Kris Wright, of CTP London, said: “These are serious charges and come as the result of a long-running investigation.“This case shows we will always pursue anyone suspected of being involved in terrorist activity, no matter where in the world or how long ago it is alleged to have taken place.”" ], - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/statement-on-recent-arson-attacks-in-north-west-london-508347", + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/man-charged-with-offences-linked-to-terrorist-group-in-somalia-508054", "sourceTier": "corroboration", "reliabilityProfile": "official_general", "incidentTrack": "case", "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", "queueReason": "Non-trigger source awaiting corroboration", "queueBucket": "quarantine", - "time": "16 Apr 2026, 16:15", - "lat": 51.5722, - "lng": -0.1941, + "time": "09 Apr 2026, 08:45", + "lat": 51.4975, + "lng": -0.1357, "major": false, - "publishedAt": "2026-04-16T15:15:00.000Z", + "publishedAt": "2026-04-09T07:45:00.000Z", "keywordHits": [ "terrorism", - "attack", - "attacks", - "arrested", - "charged" + "charged", + "charged with" ], "terrorismHits": [ "terrorism", - "counter terrorism" + "counter terrorism", + "terrorist" ], "eventType": "charge", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 12.85, + "priorityScore": 10.65, "freshnessBucket": 2, - "freshUntil": "2026-04-30T15:15:00.000Z", + "freshUntil": "2026-04-23T07:45:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-2a41f036e061211e", - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/statement-on-recent-arson-attacks-in-north-west-london-508347", + "fusedIncidentId": "fusion-e943bb1c0fe3abd0", + "source": "Metropolitan Police Service a News", + "sourceUrl": "https://news.met.police.uk/news/man-charged-with-offences-linked-to-terrorist-group-in-somalia-508054", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-16T15:15:00.000Z", + "publishedAt": "2026-04-09T07:45:00.000Z", "confidence": "Verified official source update" }, { - "fusedIncidentId": "fusion-2a41f036e061211e", - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/statement-on-recent-arson-attacks-in-north-west-london-508347", + "fusedIncidentId": "fusion-e943bb1c0fe3abd0", + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/man-charged-with-offences-linked-to-terrorist-group-in-somalia-508054", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-16T15:15:00.000Z", + "publishedAt": "2026-04-09T07:45:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 2, - "isDuplicateOf": "fusion-2a41f036e061211e" + "isDuplicateOf": "fusion-e943bb1c0fe3abd0" }, { - "id": "met-police-latest-news-0", - "fusedIncidentId": "fusion-3b3482fa7981c0b9", - "title": "Further Arrest Made In Relation To Golders Green Arson Attack", - "location": "Golders Green, London, UK", + "id": "met-police-latest-news-1", + "fusedIncidentId": "fusion-a04e9e1e3d09e4c6", + "title": "Woman Arrested After Serious Argyll Street Collision", + "location": "Westminster, London, UK", "region": "london", "lane": "incidents", - "severity": "critical", - "status": "Charged", + "severity": "high", + "status": "Arrest", "actor": "Metropolitan Police - Latest News", "subject": "Metropolitan Police - Latest News", - "happenedWhen": "04 Apr 2026, 15:07", + "happenedWhen": "19 Apr 2026, 12:41", "confidence": "Verified official source update", - "confidenceScore": 0.92, - "summary": "News - 4 April 2026 15:07 Share A further arrest has been made in connection with a Counter Terrorism Policing investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green. On the morning of Saturday, 4 April, Met", - "aiSummary": "News - 4 April 2026 15:07 Share A further arrest has been made in connection with a Counter Terrorism Policing investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green. On the morning of Saturday, 4 April, Met officers at Westminster Magistrates' Court arrested a 19-year-old man [F] in relation to the ongoing investigation into an arson attack in Golders Green. While attending the hearing of three other suspects, officers recognised the man as being involved in the arson attack. He was arrested for arson with intent to endanger life and taken into custody. Three other people have been charged in connection with the incident: [C] Hamza Iqbal 20 (28.10.05) and [D] Rehan Khan 19 (11.02.07), both British nationals from Leyton, and [E] a 17-year-old boy, a dual British and Pakistani national from Walthamstow, were charged on Friday, 3 April with arson being reckless as to whether life would be endangered contrary to Section 1(2) – Criminal Damage Act 1971. They appeared at Westminster Magistrates’ Court on Saturday, 4 April where they were remanded in custody to appear at the Old Bailey on Friday, 24 April. They were arrested on Wednesday, 1 April at different locations in east London and officers from Counter Terrorism Policing London have carried out searches at these addresses. The arrests and charges are linked to the ongoing investigation into an arson attack at approximately 01:35hrs on Monday, 23 March.", - "sourceExtract": "News - 4 April 2026 15:07 Share A further arrest has been made in connection with a Counter Terrorism Policing investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green. On the morning of Saturday, 4 April, Met officers at Westminster Magistrates' Court arrested a 19-year-old man [F] in relation to the ongoing investigation into an arson attack in Golders Green. While attending the hearing of three other suspects, officers recognised the man as being involved in the arson attack. He was arrested for arson with intent to endanger life and taken into custody. Three other people have been charged in connection with the incident: [C] Hamza Iqbal 20 (28.10.05) and [D] Rehan Khan 19 (11.02.07), both British nationals from Leyton, and [E] a 17-year-old boy, a dual British and Pakistani national from Walthamstow, were charged on Friday, 3 April with arson being reckless as to whether life would be endangered contrary to Section 1(2) – Criminal Damage Act 1971. They appeared at Westminster Magistrates’ Court on Saturday, 4 April where they were remanded in custody to appear at the Old Bailey on Friday, 24 April. They were arrested on Wednesday, 1 April at different locations in east London and officers from Counter Terrorism Policing London have carried out searches at these addresses. The arrests and charges are linked to the ongoing investigation into an arson attack at approximately 01:35hrs on Monday, 23 March. Four ambulances from Hatzola, a volunteer-led ambulance service operating in the Golders Green area of north London, were set on fire during the incident. Two other men [A and B] were also previously arrested on Wednesday, 25 March, and they have both been released on bail to a date in late-April, pending further enqui", + "confidenceScore": 0.9, + "summary": "News - 19 April 2026 12:41 Share Detectives are appealing for witnesses to come forward following a serious collision in Westminster. At around 04:30hrs on Sunday, 19 April, officers were called to Argyll Street following reports that a car had been involved i", + "aiSummary": "News - 19 April 2026 12:41 Share Detectives are appealing for witnesses to come forward following a serious collision in Westminster. At around 04:30hrs on Sunday, 19 April, officers were called to Argyll Street following reports that a car had been involved in a collision with pedestrians. Police attended with the London Ambulance Service. A woman – aged in her 30s – was taken to hospital, where she remains in a critical condition. A man in his 50s sustained life-changing injuries, and was taken to hospital. A third woman, aged in her 30s, was treated for minor injuries. The driver of the car – a 29-year-old woman – was arrested at the scene on suspicion of attempted murder, GBH, dangerous driving and drink driving. She was taken into custody, where she remains.", + "sourceExtract": "News - 19 April 2026 12:41 Share Detectives are appealing for witnesses to come forward following a serious collision in Westminster. At around 04:30hrs on Sunday, 19 April, officers were called to Argyll Street following reports that a car had been involved in a collision with pedestrians. Police attended with the London Ambulance Service. A woman – aged in her 30s – was taken to hospital, where she remains in a critical condition. A man in his 50s sustained life-changing injuries, and was taken to hospital. A third woman, aged in her 30s, was treated for minor injuries. The driver of the car – a 29-year-old woman – was arrested at the scene on suspicion of attempted murder, GBH, dangerous driving and drink driving. She was taken into custody, where she remains. The incident is not being treated as terrorism related. DCI Alison Foxwell – from Specialist Crime South – said: “As our enquiries continue, our thoughts are with those injured and their loved ones. “While this incident took place in the early hours of the morning, venues in the area were still open, and we believe a number of people will have seen what happened. “I would urge anyone who witnessed the collision, or any activity prior to it that they feel may be of relevance, to come forward. “The information you have - however minor you believe it may be - could be of crucial importance to investigators.”", "peopleInvolved": [], "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/further-arrest-made-in-relation-to-golders-green-arson-attack-507957", + "sourceUrl": "https://news.met.police.uk/news/woman-arrested-after-serious-argyll-street-collision-508396", "sourceTier": "corroboration", "reliabilityProfile": "official_general", "incidentTrack": "case", "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", "queueReason": "Non-trigger source awaiting corroboration", - "time": "04 Apr 2026, 15:07", - "lat": 51.5722, - "lng": -0.1941, + "queueBucket": "quarantine", + "time": "19 Apr 2026, 12:41", + "lat": 51.4975, + "lng": -0.1357, "major": false, - "publishedAt": "2026-04-04T14:07:00.000Z", + "publishedAt": "2026-04-19T11:41:03.000Z", "keywordHits": [ "terrorism", - "attack", - "arrest", - "arrested", - "charged" + "arrested" ], "terrorismHits": [ - "terrorism", - "counter terrorism" + "terrorism" ], - "eventType": "charge", + "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 12.85, + "priorityScore": 10.05, "freshnessBucket": 2, - "freshUntil": "2026-04-18T14:07:00.000Z", + "freshUntil": "2026-05-03T11:41:03.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-3b3482fa7981c0b9", + "fusedIncidentId": "fusion-a04e9e1e3d09e4c6", "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/further-arrest-made-in-relation-to-golders-green-arson-attack-507957", + "sourceUrl": "https://news.met.police.uk/news/woman-arrested-after-serious-argyll-street-collision-508396", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-04T14:07:00.000Z", + "publishedAt": "2026-04-19T11:41:03.000Z", "confidence": "Verified official source update" }, { - "fusedIncidentId": "fusion-3b3482fa7981c0b9", + "fusedIncidentId": "fusion-a04e9e1e3d09e4c6", "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/further-arrest-made-in-relation-to-golders-green-arson-attack-507957", + "sourceUrl": "https://news.met.police.uk/news/woman-arrested-after-serious-argyll-street-collision-508396", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-04T14:07:00.000Z", + "publishedAt": "2026-04-19T11:41:03.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 2, - "isDuplicateOf": "fusion-3b3482fa7981c0b9" + "isDuplicateOf": "fusion-a04e9e1e3d09e4c6" }, { - "id": "met-police-latest-news-3", - "fusedIncidentId": "fusion-a518885afbf6dad2", - "title": "Three Arrested Following Attempted Arson Attack In Wembley", - "location": "Golders Green, London, UK", + "id": "met-police-latest-news-0", + "fusedIncidentId": "fusion-1a950ffa2dc2c860", + "title": "Met Issues Update Ahead Of Planned Defend Our Juries Activity This Weekend", + "location": "London, UK", "region": "london", "lane": "incidents", - "severity": "critical", + "severity": "high", "status": "Arrest", "actor": "Metropolitan Police - Latest News", "subject": "Metropolitan Police - Latest News", - "happenedWhen": "16 Apr 2026, 14:05", + "happenedWhen": "10 Apr 2026, 11:08", "confidence": "Verified official source update", - "confidenceScore": 0.9, - "summary": "News - 16 April 2026 14:05 Share Three men have been arrested following an attempted arson attack on the offices of a Persian language media organisation in north-west London. At around 20:30hrs on Wednesday, 15 April, officers on proactive patrols in Wembley ", - "aiSummary": "News - 16 April 2026 14:05 Share Three men have been arrested following an attempted arson attack on the offices of a Persian language media organisation in north-west London. At around 20:30hrs on Wednesday, 15 April, officers on proactive patrols in Wembley were made aware that an ignited container had been thrown towards the premises. The container landed in a car park, where the fire immediately put itself out. No damage was reported and there were no injuries. Urgent enquiries were carried out and it was established that the suspects had left the area in a black SUV. An Armed Response Vehicle (ARV), which was in the area, quickly located a vehicle matching the description and began a pursuit when the driver failed to stop for police. It later crashed on Ballards Lane, close to the junction with Woodberry Gardens, N12. A boy aged 16 and two men aged 19 and 21 were arrested on suspicion of arson endangering life and taken into police custody where they remain.", - "sourceExtract": "News - 16 April 2026 14:05 Share Three men have been arrested following an attempted arson attack on the offices of a Persian language media organisation in north-west London. At around 20:30hrs on Wednesday, 15 April, officers on proactive patrols in Wembley were made aware that an ignited container had been thrown towards the premises. The container landed in a car park, where the fire immediately put itself out. No damage was reported and there were no injuries. Urgent enquiries were carried out and it was established that the suspects had left the area in a black SUV. An Armed Response Vehicle (ARV), which was in the area, quickly located a vehicle matching the description and began a pursuit when the driver failed to stop for police. It later crashed on Ballards Lane, close to the junction with Woodberry Gardens, N12. A boy aged 16 and two men aged 19 and 21 were arrested on suspicion of arson endangering life and taken into police custody where they remain. A number of buildings nearby were evacuated as a precaution, although it was quickly established there was no wider risk. The attack is not being treated as a terrorist incident but is being investigated by detectives from Counter Terrorism Policing London, supported by officers from the North West Command Area. At this stage, it is not being linked to the attempted arson in Finchley this week or last month’s arson in Golders Green.", - "peopleInvolved": [], + "confidenceScore": 0.88, + "summary": "Press release - 10 April 2026 11:08 Share The Metropolitan Police Service is preparing for a planned event by Defend Our Juries on Saturday, 11 April. Based on previous activity by the group, officers believe this event is likely to involve offending rather th", + "aiSummary": "Press release - 10 April 2026 11:08 Share The Metropolitan Police Service is preparing for a planned event by Defend Our Juries on Saturday, 11 April. Based on previous activity by the group, officers believe this event is likely to involve offending rather than a lawful protest. Experience from earlier events indicates significant numbers may attend in order to show support for a proscribed organisation. In September 2025, more than 890 arrests were made when protests in Parliament Square involved coordinated displays of support for Palestine Action, which is proscribed under the Terrorism Act. Last month, the Met clarified its operational approach to this issue. Palestine Action remains a proscribed organisation, and any expression of support for it constitutes a criminal offence. Where officers identify individuals engaging in such activity, enforcement action, including arrest, will follow. Commander Claire Smart, who is leading policing operations in London this weekend, said: “We are preparing for another busy weekend where we anticipate policing a large-scale event that is expected to involve criminal offences.", + "sourceExtract": "Press release - 10 April 2026 11:08 Share The Metropolitan Police Service is preparing for a planned event by Defend Our Juries on Saturday, 11 April. Based on previous activity by the group, officers believe this event is likely to involve offending rather than a lawful protest. Experience from earlier events indicates significant numbers may attend in order to show support for a proscribed organisation. In September 2025, more than 890 arrests were made when protests in Parliament Square involved coordinated displays of support for Palestine Action, which is proscribed under the Terrorism Act. Last month, the Met clarified its operational approach to this issue. Palestine Action remains a proscribed organisation, and any expression of support for it constitutes a criminal offence. Where officers identify individuals engaging in such activity, enforcement action, including arrest, will follow. Commander Claire Smart, who is leading policing operations in London this weekend, said: “We are preparing for another busy weekend where we anticipate policing a large-scale event that is expected to involve criminal offences. “While the Met regularly polices peaceful and lawful protest without the need for arrests, this event presents different considerations. Those attending should be aware that showing support for a proscribed organisation is an offence under the Terrorism Act, and we will not hesitate to act where the law is broken. “At previous events linked to this group we have seen coordinated attempts to disrupt police activity, including obstructing officers and, at times, verbal or physical abuse. Our officers are trained to deal with these situations proportionately and effectively, and we are confident we have the plans and resources in place to respond appropriatel", + "peopleInvolved": [ + "Claire Smart: Official. Commander Claire Smart, who is leading policing operations in London this weekend, said: “We are preparing for another busy weekend where we anticipate policing a large-scale event that is expected to involve criminal offences." + ], "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/three-arrested-following-attempted-arson-attack-in-wembley-508338", + "sourceUrl": "https://news.met.police.uk/pressreleases/met-issues-update-ahead-of-planned-defend-our-juries-activity-this-weekend-3442378", "sourceTier": "corroboration", "reliabilityProfile": "official_general", "incidentTrack": "case", "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", "queueReason": "Non-trigger source awaiting corroboration", "queueBucket": "quarantine", - "time": "16 Apr 2026, 14:05", - "lat": 51.5722, - "lng": -0.1941, + "time": "10 Apr 2026, 11:08", + "lat": 51.5074, + "lng": -0.1278, "major": false, - "publishedAt": "2026-04-16T13:05:42.000Z", + "publishedAt": "2026-04-10T10:08:26.000Z", "keywordHits": [ "terrorism", - "attack", - "arrested" + "arrest" ], "terrorismHits": [ "terrorism", - "counter terrorism", - "terrorist" + "proscribed organisation" ], "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 11.65, + "priorityScore": 10.05, "freshnessBucket": 2, - "freshUntil": "2026-04-30T13:05:42.000Z", + "freshUntil": "2026-04-24T10:08:26.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-a518885afbf6dad2", - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/three-arrested-following-attempted-arson-attack-in-wembley-508338", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-16T13:05:42.000Z", - "confidence": "Verified official source update" - }, - { - "fusedIncidentId": "fusion-a518885afbf6dad2", + "fusedIncidentId": "fusion-1a950ffa2dc2c860", "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/three-arrested-following-attempted-arson-attack-in-wembley-508338", + "sourceUrl": "https://news.met.police.uk/pressreleases/met-issues-update-ahead-of-planned-defend-our-juries-activity-this-weekend-3442378", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-16T13:05:42.000Z", + "publishedAt": "2026-04-10T10:08:26.000Z", "confidence": "Verified official source update" } ], - "corroborationCount": 2, - "isDuplicateOf": "fusion-a518885afbf6dad2" + "corroborationCount": 1, + "isDuplicateOf": "fusion-1a950ffa2dc2c860" }, { - "id": "met-police-latest-news-2", - "fusedIncidentId": "fusion-f7343f2612a45b1b", - "title": "Investigation Launched Into Arson At Business In Hendon", - "location": "Golders Green, London, UK", + "id": "met-police-news-1", + "fusedIncidentId": "fusion-48f0d17a5892aab4", + "title": "Counter Terrorism Policing Update On Various Arson Attacks In North West London", + "location": "London, UK", "region": "london", "lane": "incidents", - "severity": "critical", + "severity": "elevated", "status": "Arrest", - "actor": "Metropolitan Police - Latest News", - "subject": "Metropolitan Police - Latest News", - "happenedWhen": "18 Apr 2026, 11:00", + "actor": "Metropolitan Police Service a News", + "subject": "Metropolitan Police Service a News", + "happenedWhen": "16 Apr 2026, 16:23", "confidence": "Verified official source update", "confidenceScore": 0.9, - "summary": "News - 18 April 2026 11:00 Share An investigation is under way into an arson attack on a business in Hendon. Police were called at 22:31hrs on Friday, 17 April to reports of the incident. The London Fire Brigade also attended. A man was seen to approach a row ", - "aiSummary": "News - 18 April 2026 11:00 Share An investigation is under way into an arson attack on a business in Hendon. Police were called at 22:31hrs on Friday, 17 April to reports of the incident. The London Fire Brigade also attended. A man was seen to approach a row of shops with a plastic bag containing what was later found to be three bottles containing fluid. He placed the bag next to the building and lit the items in the bag. The bottles failed to fully ignite and the man fled the scene. Minor damage was caused to the shopfront and no injuries were reported. The investigation into the incident is being led by Counter Terrorism Policing London, supported by officers from the North West Command Area.", - "sourceExtract": "News - 18 April 2026 11:00 Share An investigation is under way into an arson attack on a business in Hendon. Police were called at 22:31hrs on Friday, 17 April to reports of the incident. The London Fire Brigade also attended. A man was seen to approach a row of shops with a plastic bag containing what was later found to be three bottles containing fluid. He placed the bag next to the building and lit the items in the bag. The bottles failed to fully ignite and the man fled the scene. Minor damage was caused to the shopfront and no injuries were reported. The investigation into the incident is being led by Counter Terrorism Policing London, supported by officers from the North West Command Area. It is not being treated as a terrorist incident and officers are keeping an open mind about the motive behind the attack. No arrests have been made at this time. Commander Helen Flanagan, of Counter Terrorism Policing London, said: “At this stage last night’s arson is not being linked to other incidents in the North West London area over the last week or last month’s arson in Golders Green but Counter Terrorism officers are leading due to the similarities of each attack. “I would ask that anyone with information or footage that could help our investigation gets in touch with police as soon as possible. “We will be relentless in our pursuit of those responsible for this and other, similar, hateful acts against London’s communities.” Detective Chief Superintendent Luke Williams, who leads policing in the area, said: “Since the incident in Golders Green last month we have spoken extensively to community leaders. I understand and appreciate their concerns, and I know this latest incident will add to fears in the community.", + "summary": "News - 16 April 2026 16:23 Share Counter Terrorism Policing are investigating three separate arson attacks that have occurred in north west London over recent days and weeks. Multiple arrests in the past 24 hours have now been made in connection with all three", + "aiSummary": "News - 16 April 2026 16:23 Share Counter Terrorism Policing are investigating three separate arson attacks that have occurred in north west London over recent days and weeks. Multiple arrests in the past 24 hours have now been made in connection with all three incidents. The incidents which are being investigated by CTP are: Due to the nature and circumstances of the three incidents, they are all now being investigated by officers from Counter Terrorism Policing London. None of the incidents have been declared as terrorist incidents, and officers retain an open mind in respect of any motivation behind any of the attacks. While all three incidents are being treated as separate incidents, the similarity with all three being arsons, and the nature of the buildings and locations of the incidents has been factored into to the decision for CTP London to investigate all three incidents. In addition, we are aware of speculation about an incident at the Embassy of Israel in London yesterday (Wednesday, 15 April). There has been no incident at that location, but we can confirm we have been liaising with security teams there in relation to potential security issues. Staff have been given appropriate safety advice and support is ongoing.", + "sourceExtract": "News - 16 April 2026 16:23 Share Counter Terrorism Policing are investigating three separate arson attacks that have occurred in north west London over recent days and weeks. Multiple arrests in the past 24 hours have now been made in connection with all three incidents. The incidents which are being investigated by CTP are: Due to the nature and circumstances of the three incidents, they are all now being investigated by officers from Counter Terrorism Policing London. None of the incidents have been declared as terrorist incidents, and officers retain an open mind in respect of any motivation behind any of the attacks. While all three incidents are being treated as separate incidents, the similarity with all three being arsons, and the nature of the buildings and locations of the incidents has been factored into to the decision for CTP London to investigate all three incidents. In addition, we are aware of speculation about an incident at the Embassy of Israel in London yesterday (Wednesday, 15 April). There has been no incident at that location, but we can confirm we have been liaising with security teams there in relation to potential security issues. Staff have been given appropriate safety advice and support is ongoing. Senior National Coordinator for Counter Terrorism Policing Vicki Evans said: “These incidents have happened against an operational backdrop of global instability and sustained and increasingly aggressive hostile activity on UK soil. “Whilst these investigations are ongoing and we’re progressing multiple lines of enquiry, I understand why our communities here in the UK will be concerned to learn of these arson attacks.", "peopleInvolved": [ - "Helen Flanagan: Official. Commander Helen Flanagan, of Counter Terrorism Policing London, said: “At this stage last night’s arson is not being linked to other incidents in the North West London area over the last week or last month’s arson in Golders Green but Counter Terrorism officers are leading due to the similarities of each attack." + "Policing Vicki Evans: Witness. Senior National Coordinator for Counter Terrorism Policing Vicki Evans said: “These incidents have happened against an operational backdrop of global instability and sustained and increasingly aggressive hostile activity on UK soil." ], - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/investigation-launched-into-arson-at-business-in-hendon-508392", + "source": "Metropolitan Police Service a News", + "sourceUrl": "https://news.met.police.uk/news/counter-terrorism-policing-update-on-various-arson-attacks-in-north-west-london-508349", "sourceTier": "corroboration", "reliabilityProfile": "official_general", "incidentTrack": "case", "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", "queueReason": "Non-trigger source awaiting corroboration", "queueBucket": "quarantine", - "time": "18 Apr 2026, 11:00", - "lat": 51.5722, - "lng": -0.1941, + "time": "16 Apr 2026, 16:23", + "lat": 51.5074, + "lng": -0.1278, "major": false, - "publishedAt": "2026-04-18T10:00:00.000Z", + "publishedAt": "2026-04-16T15:23:00.000Z", "keywordHits": [ "terrorism", - "attack" + "attacks" ], "terrorismHits": [ "terrorism", @@ -6657,602 +6269,761 @@ "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 11.05, + "priorityScore": 9.05, "freshnessBucket": 2, - "freshUntil": "2026-05-02T10:00:00.000Z", + "freshUntil": "2026-04-30T15:23:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-f7343f2612a45b1b", - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/investigation-launched-into-arson-at-business-in-hendon-508392", + "fusedIncidentId": "fusion-48f0d17a5892aab4", + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/counter-terrorism-policing-update-on-various-arson-attacks-in-north-west-london-508349", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-18T10:00:00.000Z", + "publishedAt": "2026-04-16T15:23:00.000Z", "confidence": "Verified official source update" }, { - "fusedIncidentId": "fusion-f7343f2612a45b1b", - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/investigation-launched-into-arson-at-business-in-hendon-508392", + "fusedIncidentId": "fusion-48f0d17a5892aab4", + "source": "Metropolitan Police Service a News", + "sourceUrl": "https://news.met.police.uk/news/counter-terrorism-policing-update-on-various-arson-attacks-in-north-west-london-508349", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-18T10:00:00.000Z", + "publishedAt": "2026-04-16T15:23:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 2, - "isDuplicateOf": "fusion-f7343f2612a45b1b" + "isDuplicateOf": "fusion-48f0d17a5892aab4" }, { - "id": "met-police-latest-news-0", - "fusedIncidentId": "fusion-917924b97a959bd6", - "title": "Investigation Launched After Attempted Arson Attack In Finchley", - "location": "Golders Green, London, UK", - "region": "london", - "lane": "incidents", - "severity": "critical", - "status": "Arrest", - "actor": "Metropolitan Police - Latest News", - "subject": "Metropolitan Police - Latest News", - "happenedWhen": "15 Apr 2026, 13:56", + "id": "eppo-news-node-7-0", + "fusedIncidentId": "fusion-6f9d09782a3c8b8a", + "title": "Spain: Two Arrested Over €3.3 Million EU Subsidy Fraud To Promote Employment | European Public Prosecutor’S Office", + "location": "Madrid, Spain", + "region": "eu", + "lane": "oversight", + "severity": "moderate", + "status": "Update", + "actor": "European Public Prosecutor's Office - News and Media", + "subject": "European Public Prosecutor's Office - News and Media", + "happenedWhen": "16 Apr 2026, 13:00", "confidence": "Verified official source update", - "confidenceScore": 0.9, - "summary": "News - 15 April 2026 13:56 Share Detectives are appealing for witnesses to come forward following an attempted arson attack on a synagogue in Finchley. The incident is being treated as an antisemitic hate crime. Two suspects, who were wearing dark clothing and", - "aiSummary": "News - 15 April 2026 13:56 Share Detectives are appealing for witnesses to come forward following an attempted arson attack on a synagogue in Finchley. The incident is being treated as an antisemitic hate crime. Two suspects, who were wearing dark clothing and balaclavas, approached the synagogue in Fallow Court Avenue, Finchley shortly after midnight, 00:00hrs, on Wednesday, 15 April and threw two bottles, suspected to contain petrol, and a brick at the building. Neither bottle ignited and no damage was reported. There were no injuries. The matter was reported by staff to police at 08:30hrs. Officers are conducting urgent enquiries to trace the suspects. No arrests have been made at this early stage.", - "sourceExtract": "News - 15 April 2026 13:56 Share Detectives are appealing for witnesses to come forward following an attempted arson attack on a synagogue in Finchley. The incident is being treated as an antisemitic hate crime. Two suspects, who were wearing dark clothing and balaclavas, approached the synagogue in Fallow Court Avenue, Finchley shortly after midnight, 00:00hrs, on Wednesday, 15 April and threw two bottles, suspected to contain petrol, and a brick at the building. Neither bottle ignited and no damage was reported. There were no injuries. The matter was reported by staff to police at 08:30hrs. Officers are conducting urgent enquiries to trace the suspects. No arrests have been made at this early stage. The incident is being investigated by detectives from the Met’s North West Command Unit, with support from specialist detectives from Counter Terrorism Policing London. Detective Chief Superintendent Luke Williams, who leads policing in the area, said: “We are aware of the significant concern that this incident will cause in the community, particularly in the wake of the arson attack in Golders Green last month. We are working with the affected synagogue and continuing to meet with community leaders. “I would like to reassure the community that we take incidents of this nature extremely seriously and detectives are working urgently to identify the suspects.", + "confidenceScore": 0.86, + "summary": "In Spanish below / En español más abajo (Luxembourg, 17 April 2026) – At the request of the European Public Prosecutor’s Office (EPPO) in Madrid (Spain), two suspects were detained on Wednesday, including a public official, over a €3.3 million fraud involving ", + "aiSummary": "European Public Prosecutor's Office - News and Media has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", + "sourceExtract": "In Spanish below / En español más abajo (Luxembourg, 17 April 2026) – At the request of the European Public Prosecutor’s Office (EPPO) in Madrid (Spain), two suspects were detained on Wednesday, including a public official, over a €3.3 million fraud involving EU funds to promote employment, spanning 15 years. Searches were carried out in the provinces of Zamora and Salamanca (Spain), targeting companies’ premises and houses of suspects. In addition, law enforcement agents seized over a dozen bank accounts with deposits worth more than €550 000 and more than 40 residential and land properties located in those provinces. The investigation concerns a suspected subsidy fraud and alleged money laundering. One of the suspects is the president of three non-profit associations that were awarded more than 20 subsidies from the European Social Fund and the European Agricultural Fund for Rural Development (EAFRD) between 2010 and 2025. The suspect applied to the same programmes for all three associations. The funds were intended to promote employment and encourage people to settle in the provinces of Zamora and Salamanca. However, the investigation showed that some of the employees of the non-profit associations hired with the EU funds were relatives of the suspect, who in fact worked for the suspect himself, namely by promoting wine produced by his winery in the province of Zamora. It is further alleged that the subsidies were obtained with the support of the suspect’s partner, a public official, using this position to facilitate the fraudulent scheme. Furthermore, the findings indicate that the suspect created a network of companies to divert the funds, issuing false invoices for fictitious operations, including a firm ostensibly involved in promoting cross-border cooperation in", "peopleInvolved": [], - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/investigation-launched-after-attempted-arson-attack-in-finchley-508283", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "incidentTrack": "case", - "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", - "queueReason": "Non-trigger source awaiting corroboration", - "queueBucket": "quarantine", - "time": "15 Apr 2026, 13:56", - "lat": 51.5722, - "lng": -0.1941, + "source": "European Public Prosecutor's Office - News and Media", + "sourceUrl": "https://www.eppo.europa.eu/en/media/news/spain-two-arrested-over-eu33-million-eu-subsidy-fraud-to-promote-employment", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "incidentTrack": "", + "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueBucket": "oversight", + "time": "16 Apr 2026, 13:00", + "lat": 40.4168, + "lng": -3.7038, "major": false, - "publishedAt": "2026-04-15T12:56:00.000Z", + "publishedAt": "2026-04-16T12:00:00.000Z", "keywordHits": [ - "terrorism", - "attack" - ], - "terrorismHits": [ - "terrorism", - "counter terrorism" + "suspect", + "arrested" ], - "eventType": "arrest", + "terrorismHits": [], + "eventType": "oversight_update", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 11.05, + "priorityScore": 4.8, "freshnessBucket": 2, - "freshUntil": "2026-04-29T12:56:00.000Z", + "freshUntil": "2026-04-24T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-917924b97a959bd6", - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/investigation-launched-after-attempted-arson-attack-in-finchley-508283", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-15T12:56:00.000Z", - "confidence": "Verified official source update" - }, - { - "fusedIncidentId": "fusion-917924b97a959bd6", - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/investigation-launched-after-attempted-arson-attack-in-finchley-508283", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-15T12:56:00.000Z", + "fusedIncidentId": "fusion-6f9d09782a3c8b8a", + "source": "European Public Prosecutor's Office - News and Media", + "sourceUrl": "https://www.eppo.europa.eu/en/media/news/spain-two-arrested-over-eu33-million-eu-subsidy-fraud-to-promote-employment", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": "2026-04-16T12:00:00.000Z", "confidence": "Verified official source update" } ], - "corroborationCount": 2, - "isDuplicateOf": "fusion-917924b97a959bd6" + "corroborationCount": 1, + "isDuplicateOf": "fusion-6f9d09782a3c8b8a" }, { - "id": "met-police-latest-news-0", - "fusedIncidentId": "fusion-e943bb1c0fe3abd0", - "title": "Man Charged With Offences Linked To Terrorist Group In Somalia", - "location": "Westminster, London, UK", - "region": "london", - "lane": "incidents", - "severity": "high", - "status": "Charged", - "actor": "Metropolitan Police - Latest News", - "subject": "Metropolitan Police - Latest News", - "happenedWhen": "09 Apr 2026, 08:45", + "id": "npcc-releases-0", + "fusedIncidentId": "fusion-c1696e8cae095a03", + "title": "Operation Leaves Criminals With Nowhere To Hide", + "location": "United Kingdom", + "region": "uk", + "lane": "context", + "severity": "moderate", + "status": "Update", + "actor": "National Police Chiefs' Council - Releases", + "subject": "National Police Chiefs' Council - Releases", + "happenedWhen": "14 Apr 2026, 01:00", "confidence": "Verified official source update", - "confidenceScore": 0.88, - "summary": "News - 9 April 2026 08:45 Share A British man has been charged with offences linked to an Islamist terrorist group based in Somalia after an investigation by Counter Terrorism Policing London.Jermaine Grant 43 (20.10.82) of no fixed address, has been charged, ", - "aiSummary": "News - 9 April 2026 08:45 Share A British man has been charged with offences linked to an Islamist terrorist group based in Somalia after an investigation by Counter Terrorism Policing London.Jermaine Grant 43 (20.10.82) of no fixed address, has been charged, following authorisation from the Crown Prosecution Service (CPS), with directing the activities of a terrorist organisation, namely Al-Shabaab, contrary to Section 56 of the Terrorism Act 2000. He has also been charged with three counts of attending an Al-Shabaab commando training camp in Kismayu in Somalia, contrary to Section 8 of the Terrorism Act 2006 and two counts of possession of an article (AK47) for terrorist purposes, contrary to Section 57 of the Terrorism Act 2000.The charges relate to a time between 31 December 2007 and 1 January 2010 when Al-Shabaab was operating in Somalia.Grant is due to appear at Westminster Magistrates’ Court on Thursday, 9 April.Acting Commander Kris Wright, of CTP London, said: “These are serious charges and come as the result of a long-running investigation.“This case shows we will always pursue anyone suspected of being involved in terrorist activity, no matter where in the world or how long ago it is alleged to have taken place.”", - "sourceExtract": "News - 9 April 2026 08:45 Share A British man has been charged with offences linked to an Islamist terrorist group based in Somalia after an investigation by Counter Terrorism Policing London.Jermaine Grant 43 (20.10.82) of no fixed address, has been charged, following authorisation from the Crown Prosecution Service (CPS), with directing the activities of a terrorist organisation, namely Al-Shabaab, contrary to Section 56 of the Terrorism Act 2000. He has also been charged with three counts of attending an Al-Shabaab commando training camp in Kismayu in Somalia, contrary to Section 8 of the Terrorism Act 2006 and two counts of possession of an article (AK47) for terrorist purposes, contrary to Section 57 of the Terrorism Act 2000.The charges relate to a time between 31 December 2007 and 1 January 2010 when Al-Shabaab was operating in Somalia.Grant is due to appear at Westminster Magistrates’ Court on Thursday, 9 April.Acting Commander Kris Wright, of CTP London, said: “These are serious charges and come as the result of a long-running investigation.“This case shows we will always pursue anyone suspected of being involved in terrorist activity, no matter where in the world or how long ago it is alleged to have taken place.”", - "peopleInvolved": [ - "Kris Wright: Official. He has also been charged with three counts of attending an Al-Shabaab commando training camp in Kismayu in Somalia, contrary to Section 8 of the Terrorism Act 2006 and two counts of possession of an article (AK47) for terrorist purposes, contrary to Section 57 of the Terrorism Act 2000.The charges relate to a time between 31 December 2007 and 1 January 2010 when Al-Shabaab was operating in Somalia.Grant is due to appear at Westminster Magistrates’ Court on Thursday, 9 April.Acting Commander Kris Wright, of CTP London, said: “These are serious charges and come as the result of a long-running investigation.“This case shows we will always pursue anyone suspected of being involved in terrorist activity, no matter where in the world or how long ago it is alleged to have taken place.”" - ], - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/man-charged-with-offences-linked-to-terrorist-group-in-somalia-508054", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "incidentTrack": "case", - "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", - "queueReason": "Non-trigger source awaiting corroboration", - "queueBucket": "quarantine", - "time": "09 Apr 2026, 08:45", - "lat": 51.4975, - "lng": -0.1357, + "confidenceScore": 0.84, + "summary": "14 Apr 2026 Cross-cutting roads policing capability tackles multiple offences An innovative partnership set up to target criminals as they use the road network has demonstrated the integral role of roads policing in tackling offenders who damage communities bo", + "aiSummary": "National Police Chiefs' Council - Releases has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "14 Apr 2026 Cross-cutting roads policing capability tackles multiple offences An innovative partnership set up to target criminals as they use the road network has demonstrated the integral role of roads policing in tackling offenders who damage communities both on and off the roads. Operation Topaz is a partnership between the National Police Chiefs’ Council (NPCC) and the Department for Transport (DfT), supported by the Home Office which explores how greater collaboration can enable roads policing to tackle criminality and improve road safety. Twelve police forces delivered coordinated activity under Op Topaz during Summer 2025 including a focus on offenders wanted for violence against women and girls, partnership work to remove illegal e-bikes and scooters from the roads and individuals involved in drugs supply and theft. 2,141 vehicles were stopped, either due to driving behaviour or intelligence highlighting involvement in criminal activity. 314 vehicles totalling including e-bikes and quad bikes, were seized and 13 stolen vehicles recovered. Forces who focussed activity on tackling violence against women and girls resulted in 49 arrests for serious offences including domestic-related kidnap and threats to kill, rape, affray, stalking and harassment, coercive control and assaults. 201 individuals were arrested in total, and as evidenced above, many were found to have committed a number of offences in addition to their driving behaviour. “When we stop a vehicle, for example due to a possible defect or as a result of dangerous driving behaviour, we will often uncover additional criminality and this Op Topaz activity supported forces to really test this theory with impactful results. “Coordinating and sharing intelligence across teams and across borders into neighbour", + "peopleInvolved": [], + "source": "National Police Chiefs' Council - Releases", + "sourceUrl": "https://news.npcc.police.uk/releases/operation-leaves-criminals-with-nowhere-to-hide", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "incidentTrack": "", + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueBucket": "context", + "time": "14 Apr 2026, 01:00", + "lat": 54.5, + "lng": -2.5, "major": false, - "publishedAt": "2026-04-09T07:45:00.000Z", + "publishedAt": "2026-04-14T00:00:00.000Z", "keywordHits": [ - "terrorism", - "charged", - "charged with" - ], - "terrorismHits": [ - "terrorism", - "counter terrorism", - "terrorist" + "arrested" ], - "eventType": "charge", - "geoPrecision": "region", + "terrorismHits": [], + "eventType": "context_update", + "geoPrecision": "country", "isOfficial": true, - "priorityScore": 10.65, + "priorityScore": 4.2, "freshnessBucket": 2, - "freshUntil": "2026-04-23T07:45:00.000Z", + "freshUntil": "2026-04-18T00:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-e943bb1c0fe3abd0", - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/man-charged-with-offences-linked-to-terrorist-group-in-somalia-508054", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-09T07:45:00.000Z", - "confidence": "Verified official source update" - }, - { - "fusedIncidentId": "fusion-e943bb1c0fe3abd0", - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/man-charged-with-offences-linked-to-terrorist-group-in-somalia-508054", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-09T07:45:00.000Z", - "confidence": "Verified official source update" - } - ], - "corroborationCount": 2, - "isDuplicateOf": "fusion-e943bb1c0fe3abd0" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "met-police-latest-news-1", - "fusedIncidentId": "fusion-a04e9e1e3d09e4c6", - "title": "Woman Arrested After Serious Argyll Street Collision", - "location": "Westminster, London, UK", + "id": "met-police-the-met-tag-0", + "fusedIncidentId": "fusion-904afde41cc56094", + "title": "45 Arrests As The Met Crackdown On Crime In Kilburn", + "location": "London, UK", "region": "london", - "lane": "incidents", - "severity": "high", - "status": "Arrest", - "actor": "Metropolitan Police - Latest News", - "subject": "Metropolitan Police - Latest News", - "happenedWhen": "19 Apr 2026, 12:41", + "lane": "context", + "severity": "moderate", + "status": "Update", + "actor": "Metropolitan Police - The Met Tag", + "subject": "Metropolitan Police - The Met Tag", + "happenedWhen": "14 Apr 2026, 00:01", "confidence": "Verified official source update", - "confidenceScore": 0.9, - "summary": "News - 19 April 2026 12:41 Share Detectives are appealing for witnesses to come forward following a serious collision in Westminster. At around 04:30hrs on Sunday, 19 April, officers were called to Argyll Street following reports that a car had been involved i", - "aiSummary": "News - 19 April 2026 12:41 Share Detectives are appealing for witnesses to come forward following a serious collision in Westminster. At around 04:30hrs on Sunday, 19 April, officers were called to Argyll Street following reports that a car had been involved in a collision with pedestrians. Police attended with the London Ambulance Service. A woman – aged in her 30s – was taken to hospital, where she remains in a critical condition. A man in his 50s sustained life-changing injuries, and was taken to hospital. A third woman, aged in her 30s, was treated for minor injuries. The driver of the car – a 29-year-old woman – was arrested at the scene on suspicion of attempted murder, GBH, dangerous driving and drink driving. She was taken into custody, where she remains.", - "sourceExtract": "News - 19 April 2026 12:41 Share Detectives are appealing for witnesses to come forward following a serious collision in Westminster. At around 04:30hrs on Sunday, 19 April, officers were called to Argyll Street following reports that a car had been involved in a collision with pedestrians. Police attended with the London Ambulance Service. A woman – aged in her 30s – was taken to hospital, where she remains in a critical condition. A man in his 50s sustained life-changing injuries, and was taken to hospital. A third woman, aged in her 30s, was treated for minor injuries. The driver of the car – a 29-year-old woman – was arrested at the scene on suspicion of attempted murder, GBH, dangerous driving and drink driving. She was taken into custody, where she remains. The incident is not being treated as terrorism related. DCI Alison Foxwell – from Specialist Crime South – said: “As our enquiries continue, our thoughts are with those injured and their loved ones. “While this incident took place in the early hours of the morning, venues in the area were still open, and we believe a number of people will have seen what happened. “I would urge anyone who witnessed the collision, or any activity prior to it that they feel may be of relevance, to come forward. “The information you have - however minor you believe it may be - could be of crucial importance to investigators.”", + "confidenceScore": 0.84, + "summary": "News - 14 April 2026 00:01 Share More than 40 people have been arrested and 74 illegal e-bikes seized as the Metropolitan Police continues to tackle crime and anti-social behaviour in north west London. A week-long operation saw more than 50 officers deployed ", + "aiSummary": "Metropolitan Police - The Met Tag has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "News - 14 April 2026 00:01 Share More than 40 people have been arrested and 74 illegal e-bikes seized as the Metropolitan Police continues to tackle crime and anti-social behaviour in north west London. A week-long operation saw more than 50 officers deployed on extra patrols on Kilburn High Road, warrants carried out at a number of addresses and licencing checks at stores suspected of selling illegal goods. Traffic stops also resulted in three arrests. This part of the operation targeted e-bikes, e-scooters and mopeds in response to concerns from residents and business that they were being driven illegally in the area and being used for crimes. A stop site was set up to pull over those using two-wheeled vehicles. Checks were carried out with the driver and the legality of the bikes. As a result: Inspector Yu Zhang, who led the operation, said: “This crackdown has seen drugs, weapons and dangerous illegal e-bikes taken off the streets. We know these offences are ones that our communities care about, and they want to see officers taking robust action. “We have done exactly that, this week-long operation will disrupt the criminal networks in Kilburn, ensuring the area is undoubtedly safer for the community. “This builds on the work we have already been doing in the North West, with neighbourhood crime cut by 6.4 per cent over the last year.” As a result of the activity:", "peopleInvolved": [], - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/woman-arrested-after-serious-argyll-street-collision-508396", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "incidentTrack": "case", - "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", - "queueReason": "Non-trigger source awaiting corroboration", - "queueBucket": "quarantine", - "time": "19 Apr 2026, 12:41", - "lat": 51.4975, - "lng": -0.1357, + "source": "Metropolitan Police - The Met Tag", + "sourceUrl": "https://news.met.police.uk/news/45-arrests-as-the-met-crackdown-on-crime-in-kilburn-508185", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "incidentTrack": "", + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueBucket": "context", + "time": "14 Apr 2026, 00:01", + "lat": 51.5074, + "lng": -0.1278, "major": false, - "publishedAt": "2026-04-19T11:41:03.000Z", + "publishedAt": "2026-04-13T23:01:00.000Z", "keywordHits": [ - "terrorism", "arrested" ], - "terrorismHits": [ - "terrorism" - ], - "eventType": "arrest", + "terrorismHits": [], + "eventType": "context_update", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 10.05, + "priorityScore": 4.2, "freshnessBucket": 2, - "freshUntil": "2026-05-03T11:41:03.000Z", + "freshUntil": "2026-04-17T23:01:00.000Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null + }, + { + "id": "gnet-research-0", + "fusedIncidentId": "fusion-f866c9fb68940c92", + "title": "Beyond The Clan: Identity Formation, Influence, And Extremist Milieux In Online Gaming-Adjacent Spaces", + "location": "United Kingdom", + "region": "uk", + "lane": "prevention", + "severity": "moderate", + "status": "Update", + "actor": "Global Network on Extremism & Technology (GNET) a Main Feed", + "subject": "Global Network on Extremism & Technology (GNET) a Main Feed", + "happenedWhen": "17 Apr 2026, 00:46", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "Over the past two decades, gaming environments have become increasingly social and massified. Multiplayer games allow players to cooperate, compete, and communicate in real time, while adjacent platforms (such as Discord or Twitch) extend interaction beyond ga", + "aiSummary": "Global Network on Extremism & Technology (GNET) a Main Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "Over the past two decades, gaming environments have become increasingly social and massified. Multiplayer games allow players to cooperate, compete, and communicate in real time, while adjacent platforms (such as Discord or Twitch) extend interaction beyond gameplay itself. Scholars studying gaming cultures have long emphasised the importance of these spaces for community building and identity construction (see, for example Gray, […]", + "peopleInvolved": [], + "source": "Global Network on Extremism & Technology (GNET) a Main Feed", + "sourceUrl": "https://gnet-research.org/2026/04/17/beyond-the-clan-identity-formation-influence-and-extremist-milieux-in-online-gaming-adjacent-spaces/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "incidentTrack": "", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "queueBucket": "prevention", + "time": "17 Apr 2026, 00:46", + "lat": 54.5, + "lng": -2.5, + "major": false, + "publishedAt": "2026-04-16T23:46:13.000Z", + "keywordHits": [ + "extremist" + ], + "terrorismHits": [ + "extremist" + ], + "eventType": "prevention_update", + "geoPrecision": "country", + "isOfficial": false, + "priorityScore": 3.3, + "freshnessBucket": 2, + "freshUntil": "2026-04-24T23:46:13.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-a04e9e1e3d09e4c6", - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/woman-arrested-after-serious-argyll-street-collision-508396", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-19T11:41:03.000Z", - "confidence": "Verified official source update" - }, + "fusedIncidentId": "fusion-f866c9fb68940c92", + "source": "Global Network on Extremism & Technology (GNET) a Main Feed", + "sourceUrl": "https://gnet-research.org/2026/04/17/beyond-the-clan-identity-formation-influence-and-extremist-milieux-in-online-gaming-adjacent-spaces/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "publishedAt": "2026-04-16T23:46:13.000Z", + "confidence": "Research or analytical source" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-f866c9fb68940c92" + }, + { + "id": "telegraph-world-news-1", + "fusedIncidentId": "fusion-509851d9a90678ff", + "title": "IDF Must Allow Women To Serve In Special Forces, Court Rules", + "location": "Jerusalem", + "region": "europe", + "lane": "context", + "severity": "moderate", + "status": "Update", + "actor": "The Telegraph a World News", + "subject": "The Telegraph a World News", + "happenedWhen": "14 Apr 2026, 12:24", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "Ruling comes as Israeli military faces recruitment crisis amid ultra-Orthodox men’s de facto exemption from service Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, bas", + "aiSummary": "The Telegraph a World News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "Ruling comes as Israeli military faces recruitment crisis amid ultra-Orthodox men’s de facto exemption from service Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based in Israel. He has reported on the Israel-Hamas war, terrorism, Israeli politics, life in the Palestinian territories and Middle East relations. He previously worked as a Senior Reporter, a Health Correspondent, and a News Reporter for The Telegraph.", + "peopleInvolved": [], + "source": "The Telegraph a World News", + "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/14/idf-must-allow-women-to-serve-in-special-forces-court-rules/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "incidentTrack": "", + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueBucket": "context", + "time": "14 Apr 2026, 12:24", + "lat": 31.7683, + "lng": 35.2137, + "major": false, + "publishedAt": "2026-04-14T11:24:00.000Z", + "keywordHits": [ + "terrorism" + ], + "terrorismHits": [ + "terrorism" + ], + "eventType": "context_update", + "geoPrecision": "city", + "isOfficial": false, + "priorityScore": 3.3, + "freshnessBucket": 2, + "freshUntil": "2026-04-18T11:24:00.000Z", + "needsHumanReview": false, + "isTerrorRelevant": true, + "corroboratingSources": [ { - "fusedIncidentId": "fusion-a04e9e1e3d09e4c6", - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/woman-arrested-after-serious-argyll-street-collision-508396", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-19T11:41:03.000Z", - "confidence": "Verified official source update" + "fusedIncidentId": "fusion-509851d9a90678ff", + "source": "The Telegraph a World News", + "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/14/idf-must-allow-women-to-serve-in-special-forces-court-rules/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "publishedAt": "2026-04-14T11:24:00.000Z", + "confidence": "Research or analytical source" } ], - "corroborationCount": 2, - "isDuplicateOf": "fusion-a04e9e1e3d09e4c6" + "corroborationCount": 1, + "isDuplicateOf": "fusion-509851d9a90678ff" }, { - "id": "met-police-latest-news-0", - "fusedIncidentId": "fusion-1a950ffa2dc2c860", - "title": "Met Issues Update Ahead Of Planned Defend Our Juries Activity This Weekend", - "location": "London, UK", + "id": "met-police-latest-news-1", + "fusedIncidentId": "fusion-79c8b34c14d07dd5", + "title": "Eight Arrests Made By Counter Terrorism Policing London", + "location": "Golders Green, London, UK", "region": "london", "lane": "incidents", - "severity": "high", - "status": "Arrest", + "severity": "critical", + "status": "Charged", "actor": "Metropolitan Police - Latest News", "subject": "Metropolitan Police - Latest News", - "happenedWhen": "10 Apr 2026, 11:08", + "happenedWhen": "21 Apr 2026, 13:00", "confidence": "Verified official source update", - "confidenceScore": 0.88, - "summary": "Press release - 10 April 2026 11:08 Share The Metropolitan Police Service is preparing for a planned event by Defend Our Juries on Saturday, 11 April. Based on previous activity by the group, officers believe this event is likely to involve offending rather th", - "aiSummary": "Press release - 10 April 2026 11:08 Share The Metropolitan Police Service is preparing for a planned event by Defend Our Juries on Saturday, 11 April. Based on previous activity by the group, officers believe this event is likely to involve offending rather than a lawful protest. Experience from earlier events indicates significant numbers may attend in order to show support for a proscribed organisation. In September 2025, more than 890 arrests were made when protests in Parliament Square involved coordinated displays of support for Palestine Action, which is proscribed under the Terrorism Act. Last month, the Met clarified its operational approach to this issue. Palestine Action remains a proscribed organisation, and any expression of support for it constitutes a criminal offence. Where officers identify individuals engaging in such activity, enforcement action, including arrest, will follow. Commander Claire Smart, who is leading policing operations in London this weekend, said: “We are preparing for another busy weekend where we anticipate policing a large-scale event that is expected to involve criminal offences.", - "sourceExtract": "Press release - 10 April 2026 11:08 Share The Metropolitan Police Service is preparing for a planned event by Defend Our Juries on Saturday, 11 April. Based on previous activity by the group, officers believe this event is likely to involve offending rather than a lawful protest. Experience from earlier events indicates significant numbers may attend in order to show support for a proscribed organisation. In September 2025, more than 890 arrests were made when protests in Parliament Square involved coordinated displays of support for Palestine Action, which is proscribed under the Terrorism Act. Last month, the Met clarified its operational approach to this issue. Palestine Action remains a proscribed organisation, and any expression of support for it constitutes a criminal offence. Where officers identify individuals engaging in such activity, enforcement action, including arrest, will follow. Commander Claire Smart, who is leading policing operations in London this weekend, said: “We are preparing for another busy weekend where we anticipate policing a large-scale event that is expected to involve criminal offences. “While the Met regularly polices peaceful and lawful protest without the need for arrests, this event presents different considerations. Those attending should be aware that showing support for a proscribed organisation is an offence under the Terrorism Act, and we will not hesitate to act where the law is broken. “At previous events linked to this group we have seen coordinated attempts to disrupt police activity, including obstructing officers and, at times, verbal or physical abuse. Our officers are trained to deal with these situations proportionately and effectively, and we are confident we have the plans and resources in place to respond appropriatel", + "confidenceScore": 0.94, + "summary": "News - 21 April 2026 13:00 Share Counter Terrorism Policing (CTP) officers investigating a series of incidents including several arson attacks in London have made a further eight arrests. Seven of these arrests, carried out in the past 48 hours, are part of a ", + "aiSummary": "News - 21 April 2026 13:00 Share Counter Terrorism Policing (CTP) officers investigating a series of incidents including several arson attacks in London have made a further eight arrests. Seven of these arrests, carried out in the past 48 hours, are part of a proactive investigation into alleged conspiracy to commit arson. At this time, while it is believed that the intended target of this conspiracy is a venue related to the Jewish community, the specific target or venue is not known. Detectives from CTP London arrested three men, aged 24, 25 and 26, in Harpenden shortly after 21.00hrs on Sunday, 19 April. They were taken into custody before being released on bail. On Monday, 20 April, a 25-year-old man was arrested in Stevenage. A 26-year-old man, and two women, aged 50 and 59, were also arrested in a car near Birmingham. They have all been taken to a London police station where they currently remain in custody.", + "sourceExtract": "News - 21 April 2026 13:00 Share Counter Terrorism Policing (CTP) officers investigating a series of incidents including several arson attacks in London have made a further eight arrests. Seven of these arrests, carried out in the past 48 hours, are part of a proactive investigation into alleged conspiracy to commit arson. At this time, while it is believed that the intended target of this conspiracy is a venue related to the Jewish community, the specific target or venue is not known. Detectives from CTP London arrested three men, aged 24, 25 and 26, in Harpenden shortly after 21.00hrs on Sunday, 19 April. They were taken into custody before being released on bail. On Monday, 20 April, a 25-year-old man was arrested in Stevenage. A 26-year-old man, and two women, aged 50 and 59, were also arrested in a car near Birmingham. They have all been taken to a London police station where they currently remain in custody. This morning (Tuesday, 21 April), a 39-year-old man was arrested at an address in Ealing under section 41 of the Terrorism Act 2000 and taken into custody. This arrest was connected to a CTP London investigation following the discovery of jars of a non-hazardous substance in Kensington Gardens on Friday, 17 April. As part of this investigation, a search is ongoing at a premises in east London. Since the attack on the Hatzola ambulances in Golders Green on 23 March, CTP officers have now arrested a total of 23 people. Eight people have been charged with arson-related offences, while 13 people remain in custody or on bail under active police investigation. Deputy Assistant Commissioner Vicki Evans, the Senior National Co-ordinator of Counter Terrorism Policing, said: “We’ve made very clear that we will be relentless in our pursuit of anyone involved in carrying ", "peopleInvolved": [ - "Claire Smart: Official. Commander Claire Smart, who is leading policing operations in London this weekend, said: “We are preparing for another busy weekend where we anticipate policing a large-scale event that is expected to involve criminal offences." + "Vicki Evans: Official. Deputy Assistant Commissioner Vicki Evans, the Senior National Co-ordinator of Counter Terrorism Policing, said: “We’ve made very clear that we will be relentless in our pursuit of anyone involved in carrying out or planning these arson attacks." ], "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/pressreleases/met-issues-update-ahead-of-planned-defend-our-juries-activity-this-weekend-3442378", + "sourceUrl": "https://news.met.police.uk/news/eight-arrests-made-by-counter-terrorism-policing-london-508480", "sourceTier": "corroboration", "reliabilityProfile": "official_general", "incidentTrack": "case", "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", "queueReason": "Non-trigger source awaiting corroboration", "queueBucket": "quarantine", - "time": "10 Apr 2026, 11:08", - "lat": 51.5074, - "lng": -0.1278, + "time": "21 Apr 2026, 13:00", + "lat": 51.5722, + "lng": -0.1941, "major": false, - "publishedAt": "2026-04-10T10:08:26.000Z", + "publishedAt": "2026-04-21T12:00:00.000Z", "keywordHits": [ "terrorism", - "arrest" + "attack", + "attacks", + "arrest", + "arrested", + "charged", + "charged with" ], "terrorismHits": [ "terrorism", - "proscribed organisation" + "counter terrorism" ], - "eventType": "arrest", + "eventType": "charge", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 10.05, - "freshnessBucket": 2, - "freshUntil": "2026-04-24T10:08:26.000Z", + "priorityScore": 12.1, + "freshnessBucket": 1, + "freshUntil": "2026-05-05T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-1a950ffa2dc2c860", + "fusedIncidentId": "fusion-79c8b34c14d07dd5", + "source": "Metropolitan Police Service a News", + "sourceUrl": "https://news.met.police.uk/news/eight-arrests-made-by-counter-terrorism-policing-london-508480", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-21T12:00:00.000Z", + "confidence": "Verified official source update" + }, + { + "fusedIncidentId": "fusion-79c8b34c14d07dd5", "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/pressreleases/met-issues-update-ahead-of-planned-defend-our-juries-activity-this-weekend-3442378", + "sourceUrl": "https://news.met.police.uk/news/eight-arrests-made-by-counter-terrorism-policing-london-508480", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-10T10:08:26.000Z", + "publishedAt": "2026-04-21T12:00:00.000Z", "confidence": "Verified official source update" } ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-1a950ffa2dc2c860" + "corroborationCount": 2, + "isDuplicateOf": "fusion-79c8b34c14d07dd5" }, { - "id": "met-police-latest-news-0", - "fusedIncidentId": "fusion-bacd3d1d87cd7e53", - "title": "Statements On Linked Arson Attacks In North West London", - "location": "London, UK", + "id": "met-police-latest-news-1", + "fusedIncidentId": "fusion-61fc8ba12c50b250", + "title": "Three Charged Over Golders Green Arson Attack", + "location": "Golders Green, London, UK", "region": "london", "lane": "incidents", - "severity": "elevated", - "status": "New source item", + "severity": "critical", + "status": "Charged", "actor": "Metropolitan Police - Latest News", "subject": "Metropolitan Police - Latest News", - "happenedWhen": "19 Apr 2026, 14:40", + "happenedWhen": "03 Apr 2026, 22:10", "confidence": "Verified official source update", - "confidenceScore": 0.9, - "summary": "News - 19 April 2026 14:40 Share The following statements were delivered by Deputy Commissioner Matt Jukes and the Senior National Co-ordinator for Counter Terrorism, Deputy Assistant Commissioner Vicki Evans outside the Kenton United Synagogue. Deputy Commiss", - "aiSummary": "News - 19 April 2026 14:40 Share The following statements were delivered by Deputy Commissioner Matt Jukes and the Senior National Co-ordinator for Counter Terrorism, Deputy Assistant Commissioner Vicki Evans outside the Kenton United Synagogue. Deputy Commissioner Matt Jukes: I’m Matt Jukes, Deputy Commissioner of the Metropolitan Police. I’m joined by Deputy Assistant Commissioner Vicki Evans, the Senior National Co-ordinator of Counter Terrorism Policing, and Matt Walker, the Deputy Commissioner of the London Fire Brigade. We continue to work closely on these incidents with all of London’s blue light partners and we're grateful for the close work with the LFB. We're going to provide an update in relation to several events from recent days and weeks. Several premises as you know, linked to Britain’s Jewish community and to those who oppose the Iranian regime, have been targeted in recent arson attacks. The latest incidents happened last night when in the Brent - Harrow area where a synagogue was attacked and in Barnet bins were set alight outside a communal block. On Friday, as you may know, a Jewish business in Barnet was also targeted.", - "sourceExtract": "News - 19 April 2026 14:40 Share The following statements were delivered by Deputy Commissioner Matt Jukes and the Senior National Co-ordinator for Counter Terrorism, Deputy Assistant Commissioner Vicki Evans outside the Kenton United Synagogue. Deputy Commissioner Matt Jukes: I’m Matt Jukes, Deputy Commissioner of the Metropolitan Police. I’m joined by Deputy Assistant Commissioner Vicki Evans, the Senior National Co-ordinator of Counter Terrorism Policing, and Matt Walker, the Deputy Commissioner of the London Fire Brigade. We continue to work closely on these incidents with all of London’s blue light partners and we're grateful for the close work with the LFB. We're going to provide an update in relation to several events from recent days and weeks. Several premises as you know, linked to Britain’s Jewish community and to those who oppose the Iranian regime, have been targeted in recent arson attacks. The latest incidents happened last night when in the Brent - Harrow area where a synagogue was attacked and in Barnet bins were set alight outside a communal block. On Friday, as you may know, a Jewish business in Barnet was also targeted. DAC Vicki Evans is going to provide an update in relation to the Counter Terrorism Policing investigation and I will go on to talk more widely about the impact on London’s communities and the Met’s work to protect them. Deputy Assistant Commissioner Vicki Evans: Counter Terrorism Policing are leading the investigations into all these incidents. The nature of the incidents has been similar – arson attacks targeting Israeli and Jewish linked premises in London. Most have been claimed online by the group Ashab al-Yamin (Islamic Movement of the Companions of the Right). This same group has claimed several incidents over recent months at p", + "confidenceScore": 0.92, + "summary": "News - 3 April 2026 22:10 Share Three people arrested in connection with a Counter Terrorism Policing (CTP) investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green, have been charged. [C] Hamza Iqbal 20 (28.1", + "aiSummary": "News - 3 April 2026 22:10 Share Three people arrested in connection with a Counter Terrorism Policing (CTP) investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green, have been charged. [C] Hamza Iqbal 20 (28.10.05) and [D] Rehan Khan 19 (11.02.07), both British nationals from Leyton, and [E] a 17-year-old boy, a dual British and Pakistani national from Walthamstow, have been charged, following authorisation from the Crown Prosecution Service, with arson being reckless as to whether life would be endangered contrary to Section 1(2) – Criminal Damage Act 1971 They were all arrested on Wednesday, 1 April at different locations in east London and officers from Counter Terrorism Policing London have carried out searches at these addresses. The arrests and charges are linked to the ongoing investigation into an arson attack at approximately 01:35hrs on Monday, 23 March. Four ambulances from Hatzola, a volunteer-led ambulance service operating in the Golders Green area of north London, were set on fire during the incident. Iqbal, Khan and the 17-year-old are due to appear at Westminster Magistrates’ Court on Saturday, 4 April. Commander Helen Flanagan, Head of Counter Terrorism Policing London, which is leading the investigation said: “Since this appalling attack last week, we have been working continuously to investigate and identify those responsible. The investigation has now reached a stage where three people have been charged and they will now appear in court. “I want to reiterate that the support we had from the local community since this attack took place has been incredible, and we will continue to work closely with local policing colleagues to do everything we can to keep the public safe.” At this stage, the incident has not been declared as terrorism, but due to the circumstances of the incident, along with the specialist capability within CTP, the investigation is being led by detectives from CTP London.", + "sourceExtract": "News - 3 April 2026 22:10 Share Three people arrested in connection with a Counter Terrorism Policing (CTP) investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green, have been charged. [C] Hamza Iqbal 20 (28.10.05) and [D] Rehan Khan 19 (11.02.07), both British nationals from Leyton, and [E] a 17-year-old boy, a dual British and Pakistani national from Walthamstow, have been charged, following authorisation from the Crown Prosecution Service, with arson being reckless as to whether life would be endangered contrary to Section 1(2) – Criminal Damage Act 1971 They were all arrested on Wednesday, 1 April at different locations in east London and officers from Counter Terrorism Policing London have carried out searches at these addresses. The arrests and charges are linked to the ongoing investigation into an arson attack at approximately 01:35hrs on Monday, 23 March. Four ambulances from Hatzola, a volunteer-led ambulance service operating in the Golders Green area of north London, were set on fire during the incident. Iqbal, Khan and the 17-year-old are due to appear at Westminster Magistrates’ Court on Saturday, 4 April. Commander Helen Flanagan, Head of Counter Terrorism Policing London, which is leading the investigation said: “Since this appalling attack last week, we have been working continuously to investigate and identify those responsible. The investigation has now reached a stage where three people have been charged and they will now appear in court. “I want to reiterate that the support we had from the local community since this attack took place has been incredible, and we will continue to work closely with local policing colleagues to do everything we can to keep the public safe.” At this stage, the incident ", "peopleInvolved": [ - "Matt Jukes: Official. News - 19 April 2026 14:40 Share The following statements were delivered by Deputy Commissioner Matt Jukes and the Senior National Co-ordinator for Counter Terrorism, Deputy Assistant Commissioner Vicki Evans outside the Kenton United Synagogue.", - "Vicki Evans: Official. News - 19 April 2026 14:40 Share The following statements were delivered by Deputy Commissioner Matt Jukes and the Senior National Co-ordinator for Counter Terrorism, Deputy Assistant Commissioner Vicki Evans outside the Kenton United Synagogue." + "Helen Flanagan: Official. Commander Helen Flanagan, Head of Counter Terrorism Policing London, which is leading the investigation said: “Since this appalling attack last week, we have been working continuously to investigate and identify those responsible.", + "North West London: Witness. Detective Chief Superintendent Luke Williams, who leads policing in North West London said: “We know that local community concerns continue to remain high – particularly for our Jewish communities in the Pas" ], "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/statements-on-linked-arson-attacks-in-north-west-london-508398", + "sourceUrl": "https://news.met.police.uk/news/three-charged-over-golders-green-arson-attack-507955", "sourceTier": "corroboration", "reliabilityProfile": "official_general", "incidentTrack": "case", "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", "queueReason": "Non-trigger source awaiting corroboration", "queueBucket": "quarantine", - "time": "19 Apr 2026, 14:40", - "lat": 51.5074, - "lng": -0.1278, + "time": "03 Apr 2026, 22:10", + "lat": 51.5722, + "lng": -0.1941, "major": false, - "publishedAt": "2026-04-19T13:40:00.000Z", + "publishedAt": "2026-04-03T21:10:00.000Z", "keywordHits": [ "terrorism", - "attacks" + "attack", + "arrested", + "charged" ], "terrorismHits": [ "terrorism", "counter terrorism" ], - "eventType": "incident_update", + "eventType": "charge", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 9.05, - "freshnessBucket": 2, - "freshUntil": "2026-05-03T13:40:00.000Z", + "priorityScore": 11.5, + "freshnessBucket": 1, + "freshUntil": "2026-04-17T21:10:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-bacd3d1d87cd7e53", + "fusedIncidentId": "fusion-61fc8ba12c50b250", "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/statements-on-linked-arson-attacks-in-north-west-london-508398", + "sourceUrl": "https://news.met.police.uk/news/three-charged-over-golders-green-arson-attack-507955", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-19T13:40:00.000Z", + "publishedAt": "2026-04-03T21:10:00.000Z", "confidence": "Verified official source update" }, { - "fusedIncidentId": "fusion-bacd3d1d87cd7e53", + "fusedIncidentId": "fusion-61fc8ba12c50b250", "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/statements-on-linked-arson-attacks-in-north-west-london-508398", + "sourceUrl": "https://news.met.police.uk/news/three-charged-over-golders-green-arson-attack-507955", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-19T13:40:00.000Z", + "publishedAt": "2026-04-03T21:10:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 2, - "isDuplicateOf": "fusion-bacd3d1d87cd7e53" + "isDuplicateOf": "fusion-61fc8ba12c50b250" }, { - "id": "met-police-news-1", - "fusedIncidentId": "fusion-48f0d17a5892aab4", - "title": "Counter Terrorism Policing Update On Various Arson Attacks In North West London", + "id": "met-police-news-6", + "fusedIncidentId": "fusion-4d5e7ff00941dc7c", + "title": "UPDATED: Two Arrests Made In Finchley Attempted Arson Investigation", "location": "London, UK", "region": "london", "lane": "incidents", - "severity": "elevated", + "severity": "critical", "status": "Arrest", "actor": "Metropolitan Police Service a News", "subject": "Metropolitan Police Service a News", - "happenedWhen": "16 Apr 2026, 16:23", + "happenedWhen": "15 Apr 2026, 20:43", "confidence": "Verified official source update", "confidenceScore": 0.9, - "summary": "News - 16 April 2026 16:23 Share Counter Terrorism Policing are investigating three separate arson attacks that have occurred in north west London over recent days and weeks. Multiple arrests in the past 24 hours have now been made in connection with all three", - "aiSummary": "News - 16 April 2026 16:23 Share Counter Terrorism Policing are investigating three separate arson attacks that have occurred in north west London over recent days and weeks. Multiple arrests in the past 24 hours have now been made in connection with all three incidents. The incidents which are being investigated by CTP are: Due to the nature and circumstances of the three incidents, they are all now being investigated by officers from Counter Terrorism Policing London. None of the incidents have been declared as terrorist incidents, and officers retain an open mind in respect of any motivation behind any of the attacks. While all three incidents are being treated as separate incidents, the similarity with all three being arsons, and the nature of the buildings and locations of the incidents has been factored into to the decision for CTP London to investigate all three incidents. In addition, we are aware of speculation about an incident at the Embassy of Israel in London yesterday (Wednesday, 15 April). There has been no incident at that location, but we can confirm we have been liaising with security teams there in relation to potential security issues. Staff have been given appropriate safety advice and support is ongoing.", - "sourceExtract": "News - 16 April 2026 16:23 Share Counter Terrorism Policing are investigating three separate arson attacks that have occurred in north west London over recent days and weeks. Multiple arrests in the past 24 hours have now been made in connection with all three incidents. The incidents which are being investigated by CTP are: Due to the nature and circumstances of the three incidents, they are all now being investigated by officers from Counter Terrorism Policing London. None of the incidents have been declared as terrorist incidents, and officers retain an open mind in respect of any motivation behind any of the attacks. While all three incidents are being treated as separate incidents, the similarity with all three being arsons, and the nature of the buildings and locations of the incidents has been factored into to the decision for CTP London to investigate all three incidents. In addition, we are aware of speculation about an incident at the Embassy of Israel in London yesterday (Wednesday, 15 April). There has been no incident at that location, but we can confirm we have been liaising with security teams there in relation to potential security issues. Staff have been given appropriate safety advice and support is ongoing. Senior National Coordinator for Counter Terrorism Policing Vicki Evans said: “These incidents have happened against an operational backdrop of global instability and sustained and increasingly aggressive hostile activity on UK soil. “Whilst these investigations are ongoing and we’re progressing multiple lines of enquiry, I understand why our communities here in the UK will be concerned to learn of these arson attacks.", - "peopleInvolved": [ - "Policing Vicki Evans: Witness. Senior National Coordinator for Counter Terrorism Policing Vicki Evans said: “These incidents have happened against an operational backdrop of global instability and sustained and increasingly aggressive hostile activity on UK soil." - ], + "summary": "News - 15 April 2026 20:43 Share Two people have been arrested in connection with an attempted arson attack on a synagogue in Finchley. The incident is being treated as an antisemitic hate crime. At 16:47hrs on Wednesday, 15 April, police arrested a 47-year-ol", + "aiSummary": "News - 15 April 2026 20:43 Share Two people have been arrested in connection with an attempted arson attack on a synagogue in Finchley. The incident is being treated as an antisemitic hate crime. At 16:47hrs on Wednesday, 15 April, police arrested a 47-year-old woman at an address in Kings Langley, Hertfordshire, on suspicion of arson endangering life. At 19:15hrs, officers arrested a 46-year-old man in the Watford area on suspicion of arson endangering life. The arrests were made by officers from the Met’s North West Area Command Unit. Both suspects were taken into custody before being released on bail to a date in July. It follows an investigation into the attempted attack on a synagogue in Fallow Court Avenue, Finchley. The investigation is now being led by detectives from Counter Terrorism Policing London.", + "sourceExtract": "News - 15 April 2026 20:43 Share Two people have been arrested in connection with an attempted arson attack on a synagogue in Finchley. The incident is being treated as an antisemitic hate crime. At 16:47hrs on Wednesday, 15 April, police arrested a 47-year-old woman at an address in Kings Langley, Hertfordshire, on suspicion of arson endangering life. At 19:15hrs, officers arrested a 46-year-old man in the Watford area on suspicion of arson endangering life. The arrests were made by officers from the Met’s North West Area Command Unit. Both suspects were taken into custody before being released on bail to a date in July. It follows an investigation into the attempted attack on a synagogue in Fallow Court Avenue, Finchley. The investigation is now being led by detectives from Counter Terrorism Policing London. CCTV obtained by detectives during the course of the investigation today shows that two suspects, who were dressed in dark clothing and balaclavas, gained entry to the synagogue’s grounds at around 00:09hrs on Wednesday, 15 April. They were seen to place two glass bottles next to the synagogue’s windows and threw a brick at the building. One of the bottles, which contained a substance suspected to be petrol, was smashed by the brick. Neither of the bottles were ignited and the suspects fled the scene. No damage was caused to the building and no injuries were reported.", + "peopleInvolved": [], "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/counter-terrorism-policing-update-on-various-arson-attacks-in-north-west-london-508349", + "sourceUrl": "https://news.met.police.uk/news/further-arrests-after-attempted-finchley-synagogue-arson-attack-508304", "sourceTier": "corroboration", "reliabilityProfile": "official_general", "incidentTrack": "case", "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", "queueReason": "Non-trigger source awaiting corroboration", "queueBucket": "quarantine", - "time": "16 Apr 2026, 16:23", + "time": "15 Apr 2026, 20:43", "lat": 51.5074, "lng": -0.1278, "major": false, - "publishedAt": "2026-04-16T15:23:00.000Z", + "publishedAt": "2026-04-15T19:43:38.000Z", "keywordHits": [ "terrorism", - "attacks" + "attack", + "arrested" ], "terrorismHits": [ "terrorism", - "counter terrorism", - "terrorist" + "counter terrorism" ], "eventType": "arrest", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 9.05, - "freshnessBucket": 2, - "freshUntil": "2026-04-30T15:23:00.000Z", + "priorityScore": 10.9, + "freshnessBucket": 1, + "freshUntil": "2026-04-29T19:43:38.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-48f0d17a5892aab4", - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/counter-terrorism-policing-update-on-various-arson-attacks-in-north-west-london-508349", + "fusedIncidentId": "fusion-4d5e7ff00941dc7c", + "source": "Metropolitan Police Service a News", + "sourceUrl": "https://news.met.police.uk/news/further-arrests-after-attempted-finchley-synagogue-arson-attack-508304", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-16T15:23:00.000Z", + "publishedAt": "2026-04-15T19:43:38.000Z", "confidence": "Verified official source update" - }, + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-4d5e7ff00941dc7c" + }, + { + "id": "met-police-latest-news-2", + "fusedIncidentId": "fusion-d3e64615779eec5c", + "title": "Gang Sentenced For Prison Smuggling Operation", + "location": "London, UK", + "region": "london", + "lane": "incidents", + "severity": "high", + "status": "Arrest", + "actor": "Metropolitan Police - Latest News", + "subject": "Metropolitan Police - Latest News", + "happenedWhen": "02 Apr 2026, 16:02", + "confidence": "Verified official source update", + "confidenceScore": 0.88, + "summary": "News - 2 April 2026 16:02 Share A former prison officer and a gang who smuggled drugs, mobile phones and USB sticks into a prison during visits, have been jailed for a combined 25 years, following a Metropolitan Police investigation. Officers from the Met’s sp", + "aiSummary": "News - 2 April 2026 16:02 Share A former prison officer and a gang who smuggled drugs, mobile phones and USB sticks into a prison during visits, have been jailed for a combined 25 years, following a Metropolitan Police investigation. Officers from the Met’s specialist crime unit began investigating in February 2024, when the Prison Service alerted them to a prison guard at HMP Isis, who had been suspended. The Met investigation uncovered that the prison officer, Jason Thompson, had been involved in smuggling cannabis resin into the prison. He had also been using a burner phone to communicate with members of an organised crime group who are believed to have been responsible for a total of eighteen package drop-offs between February and July 2024. The investigation began with enquiries into a local drugs line operating near several prisons. It uncovered the involvement of the Thompson, which exposed a link between a north London organised crime group and the supply of Class B drugs into the prison. Officers found mobile phones, cannabis, vape oil and USB sticks containing entertainment and pornographic material were being smuggled into prisons. The group arranged supervised visits through the booking system, during which the packages would be transferred into the prison.", + "sourceExtract": "News - 2 April 2026 16:02 Share A former prison officer and a gang who smuggled drugs, mobile phones and USB sticks into a prison during visits, have been jailed for a combined 25 years, following a Metropolitan Police investigation. Officers from the Met’s specialist crime unit began investigating in February 2024, when the Prison Service alerted them to a prison guard at HMP Isis, who had been suspended. The Met investigation uncovered that the prison officer, Jason Thompson, had been involved in smuggling cannabis resin into the prison. He had also been using a burner phone to communicate with members of an organised crime group who are believed to have been responsible for a total of eighteen package drop-offs between February and July 2024. The investigation began with enquiries into a local drugs line operating near several prisons. It uncovered the involvement of the Thompson, which exposed a link between a north London organised crime group and the supply of Class B drugs into the prison. Officers found mobile phones, cannabis, vape oil and USB sticks containing entertainment and pornographic material were being smuggled into prisons. The group arranged supervised visits through the booking system, during which the packages would be transferred into the prison. Once alerted to the smuggling activity, officers began a large-scale, proactive investigation aimed at disrupting the criminal network. This involved the review of over 800 hours’ worth of CCTV and phone material to disrupt the gang. They found the gang would communicate in code, an unheard slang, to avoid detection and would purposely turn off devices and dump them in order to cover their tracks. The operation concluded with officers intercepting one of the packages, which contained cannabis resin on Wed", + "peopleInvolved": [], + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/gang-sentenced-for-prison-smuggling-operation-507930", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "incidentTrack": "case", + "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", + "queueReason": "Needs human review", + "time": "02 Apr 2026, 16:02", + "lat": 51.5074, + "lng": -0.1278, + "major": false, + "publishedAt": "2026-04-02T15:02:43.000Z", + "keywordHits": [ + "isis" + ], + "terrorismHits": [ + "isis" + ], + "eventType": "sentencing", + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 8.7, + "freshnessBucket": 1, + "freshUntil": "2026-04-16T15:02:43.000Z", + "needsHumanReview": true, + "isTerrorRelevant": true, + "corroboratingSources": [ { - "fusedIncidentId": "fusion-48f0d17a5892aab4", + "fusedIncidentId": "fusion-d3e64615779eec5c", "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/counter-terrorism-policing-update-on-various-arson-attacks-in-north-west-london-508349", + "sourceUrl": "https://news.met.police.uk/news/gang-sentenced-for-prison-smuggling-operation-507930", "sourceTier": "corroboration", "reliabilityProfile": "official_general", - "publishedAt": "2026-04-16T15:23:00.000Z", + "publishedAt": "2026-04-02T15:02:43.000Z", + "confidence": "Verified official source update" + }, + { + "fusedIncidentId": "fusion-d3e64615779eec5c", + "source": "Metropolitan Police - Latest News", + "sourceUrl": "https://news.met.police.uk/news/gang-sentenced-for-prison-smuggling-operation-507930", + "sourceTier": "corroboration", + "reliabilityProfile": "official_general", + "publishedAt": "2026-04-02T15:02:43.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 2, - "isDuplicateOf": "fusion-48f0d17a5892aab4" + "isDuplicateOf": "fusion-d3e64615779eec5c" }, { - "id": "eppo-news-node-7-0", - "fusedIncidentId": "fusion-6f9d09782a3c8b8a", - "title": "Spain: Two Arrested Over €3.3 Million EU Subsidy Fraud To Promote Employment | European Public Prosecutor’S Office", - "location": "Madrid, Spain", - "region": "eu", - "lane": "oversight", + "id": "dhs-press-releases-0", + "fusedIncidentId": "fusion-e8a752a50499f3b2", + "title": "National Terrorism Advisory System | Homeland Security", + "location": "United States", + "region": "us", + "lane": "context", "severity": "moderate", "status": "Update", - "actor": "European Public Prosecutor's Office - News and Media", - "subject": "European Public Prosecutor's Office - News and Media", - "happenedWhen": "16 Apr 2026, 13:00", + "actor": "US Department of Homeland Security - News", + "subject": "US Department of Homeland Security - News", + "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", - "confidenceScore": 0.86, - "summary": "In Spanish below / En español más abajo (Luxembourg, 17 April 2026) – At the request of the European Public Prosecutor’s Office (EPPO) in Madrid (Spain), two suspects were detained on Wednesday, including a public official, over a €3.3 million fraud involving ", - "aiSummary": "European Public Prosecutor's Office - News and Media has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "In Spanish below / En español más abajo (Luxembourg, 17 April 2026) – At the request of the European Public Prosecutor’s Office (EPPO) in Madrid (Spain), two suspects were detained on Wednesday, including a public official, over a €3.3 million fraud involving EU funds to promote employment, spanning 15 years. Searches were carried out in the provinces of Zamora and Salamanca (Spain), targeting companies’ premises and houses of suspects. In addition, law enforcement agents seized over a dozen bank accounts with deposits worth more than €550 000 and more than 40 residential and land properties located in those provinces. The investigation concerns a suspected subsidy fraud and alleged money laundering. One of the suspects is the president of three non-profit associations that were awarded more than 20 subsidies from the European Social Fund and the European Agricultural Fund for Rural Development (EAFRD) between 2010 and 2025. The suspect applied to the same programmes for all three associations. The funds were intended to promote employment and encourage people to settle in the provinces of Zamora and Salamanca. However, the investigation showed that some of the employees of the non-profit associations hired with the EU funds were relatives of the suspect, who in fact worked for the suspect himself, namely by promoting wine produced by his winery in the province of Zamora. It is further alleged that the subsidies were obtained with the support of the suspect’s partner, a public official, using this position to facilitate the fraudulent scheme. Furthermore, the findings indicate that the suspect created a network of companies to divert the funds, issuing false invoices for fictitious operations, including a firm ostensibly involved in promoting cross-border cooperation in", + "confidenceScore": 0.8, + "summary": "The National Terrorism Advisory System (NTAS) is designed to communicate information about terrorist threats by providing timely, detailed information to the American public. All Americans share responsibility for the nation's security, and should always be aw", + "aiSummary": "US Department of Homeland Security - News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "The National Terrorism Advisory System (NTAS) is designed to communicate information about terrorist threats by providing timely, detailed information to the American public. All Americans share responsibility for the nation's security, and should always be aware of the heightened risk of terrorist attack in the United States and what they should do. This page contains current NTAS advisories (both Alerts and Bulletins), archived copies of expired advisories, and additional information on the NTAS system. DHS replaced the color-coded alerts of the Homeland Security Advisory System (HSAS) with the National Terrorism Advisory System (NTAS) in 2011. The ongoing Iran conflict is causing a heightened threat environment in the United States. Low-level cyber attacks against US networks by pro-Iranian hacktivists are likely, and cyber actors affiliated with the Iranian government may conduct attacks against US networks. Iran also has a long-standing commitment to target US Government officials it views as responsible for the death of an Iranian military commander killed in January 2020. The likelihood of violent extremists in the Homeland independently mobilizing to violence in response to the conflict would likely increase if Iranian leadership issued a religious ruling calling for retaliatory violence against targets in the Homeland. Multiple recent Homeland terrorist attacks have been motivated by anti-Semitic or anti-Israel sentiment, and the ongoing Israel-Iran conflict could contribute to US-based individuals plotting additional attacks. En español Sa Tagalog 한국어로 trong tiếng việt بالعربية 读中文 讀中文 ในภาษาไทย The United States remains in a heightened threat environment. Lone offenders and small groups motivated by a range of ideological beliefs and personal grievances conti", "peopleInvolved": [], - "source": "European Public Prosecutor's Office - News and Media", - "sourceUrl": "https://www.eppo.europa.eu/en/media/news/spain-two-arrested-over-eu33-million-eu-subsidy-fraud-to-promote-employment", + "source": "US Department of Homeland Security - News", + "sourceUrl": "https://www.dhs.gov/national-terrorism-advisory-system", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "16 Apr 2026, 13:00", - "lat": 40.4168, - "lng": -3.7038, + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "time": "Source date unconfirmed", + "lat": 39.8283, + "lng": -98.5795, "major": false, - "publishedAt": "2026-04-16T12:00:00.000Z", + "publishedAt": null, "keywordHits": [ - "suspect", - "arrested" + "terrorism", + "attack", + "attacks", + "extremist", + "threat" ], - "terrorismHits": [], - "eventType": "oversight_update", + "terrorismHits": [ + "terrorism", + "terrorist", + "extremist" + ], + "eventType": "context_update", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 4.8, - "freshnessBucket": 2, - "freshUntil": "2026-04-24T12:00:00.000Z", + "priorityScore": 4.6, + "freshnessBucket": 1, + "freshUntil": "2026-04-10T05:26:53.285Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-6f9d09782a3c8b8a", - "source": "European Public Prosecutor's Office - News and Media", - "sourceUrl": "https://www.eppo.europa.eu/en/media/news/spain-two-arrested-over-eu33-million-eu-subsidy-fraud-to-promote-employment", + "fusedIncidentId": "fusion-e8a752a50499f3b2", + "source": "US Department of Homeland Security - News", + "sourceUrl": "https://www.dhs.gov/national-terrorism-advisory-system", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-04-16T12:00:00.000Z", + "publishedAt": null, "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-6f9d09782a3c8b8a" + "isDuplicateOf": "fusion-e8a752a50499f3b2" }, { - "id": "npcc-releases-0", - "fusedIncidentId": "fusion-c1696e8cae095a03", - "title": "Operation Leaves Criminals With Nowhere To Hide", + "id": "protectuk-1", + "fusedIncidentId": "fusion-cbf1ce4f666d836c", + "title": "ACT For Local Authorities | ProtectUK", "location": "United Kingdom", "region": "uk", - "lane": "context", + "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "National Police Chiefs' Council - Releases", - "subject": "National Police Chiefs' Council - Releases", - "happenedWhen": "14 Apr 2026, 01:00", + "actor": "ProtectUK (NPSA) a Protective Security Guidance", + "subject": "ProtectUK (NPSA) a Protective Security Guidance", + "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "14 Apr 2026 Cross-cutting roads policing capability tackles multiple offences An innovative partnership set up to target criminals as they use the road network has demonstrated the integral role of roads policing in tackling offenders who damage communities bo", - "aiSummary": "National Police Chiefs' Council - Releases has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "14 Apr 2026 Cross-cutting roads policing capability tackles multiple offences An innovative partnership set up to target criminals as they use the road network has demonstrated the integral role of roads policing in tackling offenders who damage communities both on and off the roads. Operation Topaz is a partnership between the National Police Chiefs’ Council (NPCC) and the Department for Transport (DfT), supported by the Home Office which explores how greater collaboration can enable roads policing to tackle criminality and improve road safety. Twelve police forces delivered coordinated activity under Op Topaz during Summer 2025 including a focus on offenders wanted for violence against women and girls, partnership work to remove illegal e-bikes and scooters from the roads and individuals involved in drugs supply and theft. 2,141 vehicles were stopped, either due to driving behaviour or intelligence highlighting involvement in criminal activity. 314 vehicles totalling including e-bikes and quad bikes, were seized and 13 stolen vehicles recovered. Forces who focussed activity on tackling violence against women and girls resulted in 49 arrests for serious offences including domestic-related kidnap and threats to kill, rape, affray, stalking and harassment, coercive control and assaults. 201 individuals were arrested in total, and as evidenced above, many were found to have committed a number of offences in addition to their driving behaviour. “When we stop a vehicle, for example due to a possible defect or as a result of dangerous driving behaviour, we will often uncover additional criminality and this Op Topaz activity supported forces to really test this theory with impactful results. “Coordinating and sharing intelligence across teams and across borders into neighbour", + "confidenceScore": 0.8, + "summary": "ACT for Local Authorities is an initiative led by Counter Terrorism Policing (CTP) to support local government partners to embed counter terrorism considerations into their day-to-day work. Local authorities have the best knowledge of their local area, and eit", + "aiSummary": "ProtectUK (NPSA) a Protective Security Guidance has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "ACT for Local Authorities is an initiative led by Counter Terrorism Policing (CTP) to support local government partners to embed counter terrorism considerations into their day-to-day work. Local authorities have the best knowledge of their local area, and either own or have influence over the land and activities which occur in public spaces. By considering and mitigating terrorist risks through protective security and preparedness activity, with the support of counter terrorism experts, local authorities are in a unique position to enhance the safety and security of public spaces for their communities. The strategic context ACT for Local Authorities specifically focuses on the Protect and Prepare elements of the UK government’s counter terrorism strategy (known as CONTEST) and has been designed to support this work at a local level. Under CONTEST, the Protect strand aims to ‘strengthen the United Kingdom’s protection against terrorist attacks’ while the Prepare strand aims to ‘minimise the impact of an attack and reduce the likelihood of further attacks'. ACT for Local Authorities is separate, yet complementary, to the Terrorism (Protection of Premises) Act 2025, also known as Martyn’s Law. While Martyn’s Law places greater responsibility on individual qualifying premises and events to enhance their counter terrorism planning, ACT for Local Authorities addresses protective security and preparedness planning holistically across public spaces, which are either owned, managed, or influenced by local authorities. The terrorist threat The ACT for Local Authorities initiative is borne out of recognition of the changing terrorist threat landscape. This landscape is now dominated by individuals acting without the direction or material support of organised groups. Since 2014, a", "peopleInvolved": [], - "source": "National Police Chiefs' Council - Releases", - "sourceUrl": "https://news.npcc.police.uk/releases/operation-leaves-criminals-with-nowhere-to-hide", + "source": "ProtectUK (NPSA) a Protective Security Guidance", + "sourceUrl": "https://www.protectuk.police.uk/act-local-authorities", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "14 Apr 2026, 01:00", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "time": "Source date unconfirmed", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-04-14T00:00:00.000Z", + "publishedAt": null, "keywordHits": [ - "arrested" + "terrorism", + "attack", + "attacks", + "threat" ], - "terrorismHits": [], - "eventType": "context_update", + "terrorismHits": [ + "terrorism", + "counter terrorism", + "terrorist" + ], + "eventType": "prevention_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 4.2, - "freshnessBucket": 2, - "freshUntil": "2026-04-18T00:00:00.000Z", + "priorityScore": 4, + "freshnessBucket": 1, + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null - }, - { - "id": "met-police-the-met-tag-0", - "fusedIncidentId": "fusion-904afde41cc56094", - "title": "45 Arrests As The Met Crackdown On Crime In Kilburn", - "location": "London, UK", - "region": "london", + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-cbf1ce4f666d836c", + "source": "ProtectUK (NPSA) a Protective Security Guidance", + "sourceUrl": "https://www.protectuk.police.uk/act-local-authorities", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, + "confidence": "Verified official source update" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-cbf1ce4f666d836c" + }, + { + "id": "state-dept-terrorism-3", + "fusedIncidentId": "fusion-4279d368d8d4a13f", + "title": "Programs And Initiatives - United States Department Of State", + "location": "United States", + "region": "us", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "Metropolitan Police - The Met Tag", - "subject": "Metropolitan Police - The Met Tag", - "happenedWhen": "14 Apr 2026, 00:01", + "actor": "US State Department a Bureau of Counterterrorism", + "subject": "US State Department a Bureau of Counterterrorism", + "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "News - 14 April 2026 00:01 Share More than 40 people have been arrested and 74 illegal e-bikes seized as the Metropolitan Police continues to tackle crime and anti-social behaviour in north west London. A week-long operation saw more than 50 officers deployed ", - "aiSummary": "Metropolitan Police - The Met Tag has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "News - 14 April 2026 00:01 Share More than 40 people have been arrested and 74 illegal e-bikes seized as the Metropolitan Police continues to tackle crime and anti-social behaviour in north west London. A week-long operation saw more than 50 officers deployed on extra patrols on Kilburn High Road, warrants carried out at a number of addresses and licencing checks at stores suspected of selling illegal goods. Traffic stops also resulted in three arrests. This part of the operation targeted e-bikes, e-scooters and mopeds in response to concerns from residents and business that they were being driven illegally in the area and being used for crimes. A stop site was set up to pull over those using two-wheeled vehicles. Checks were carried out with the driver and the legality of the bikes. As a result: Inspector Yu Zhang, who led the operation, said: “This crackdown has seen drugs, weapons and dangerous illegal e-bikes taken off the streets. We know these offences are ones that our communities care about, and they want to see officers taking robust action. “We have done exactly that, this week-long operation will disrupt the criminal networks in Kilburn, ensuring the area is undoubtedly safer for the community. “This builds on the work we have already been doing in the North West, with neighbourhood crime cut by 6.4 per cent over the last year.” As a result of the activity:", + "confidenceScore": 0.8, + "summary": "Bureau of Counterterrorism The Bureau of Counterterrorism (CT) works to strengthen partnerships, civilian capacity, and information sharing around the world to counter evolving terrorist threats and prevent the spread of violent extremism. CT designs, manages,", + "aiSummary": "US State Department a Bureau of Counterterrorism has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "Bureau of Counterterrorism The Bureau of Counterterrorism (CT) works to strengthen partnerships, civilian capacity, and information sharing around the world to counter evolving terrorist threats and prevent the spread of violent extremism. CT designs, manages, and oversees foreign assistance to build the civilian capabilities of foreign government partners to counter terrorism and violent extremism in an effective and sustainable fashion. CT seeks to build law enforcement and judicial capabilities to mitigate attacks, disrupt terrorist transit, and arrest, investigate, prosecute, and incarcerate terrorists in accordance with the rule of law. To bolster these efforts, CT seeks to promote the leadership of other countries to build capacity in third countries in their regions. CT also seeks to strengthen partnerships and initiatives involving government and non-governmental actors to counter sources of violent extremist messaging, narratives, and recruitment. Since its creation in 1983, the Antiterrorism Assistance (ATA) program has served as the primary provider of U.S. government antiterrorism training and equipment to law-enforcement agencies of partner nations throughout the world, and has delivered counterterrorism training to more than 90,000 law enforcement personnel from 154 countries. From prevention of terrorist attacks to responding to and mitigating terrorist attacks, ATA helps partner nations build critical capabilities across a wide spectrum of counterterrorism skills. ATA will continue to provide training courses, consultations, mentorships, seminars, and equipment relevant to investigations, border security, protection of critical targets, leadership and management, regional coordination and cooperation, critical incident response and management, and cyber ", "peopleInvolved": [], - "source": "Metropolitan Police - The Met Tag", - "sourceUrl": "https://news.met.police.uk/news/45-arrests-as-the-met-crackdown-on-crime-in-kilburn-508185", + "source": "US State Department a Bureau of Counterterrorism", + "sourceUrl": "https://www.state.gov/bureau-of-counterterrorism-programs-and-initiatives/", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "14 Apr 2026, 00:01", - "lat": 51.5074, - "lng": -0.1278, + "time": "Source date unconfirmed", + "lat": 39.8283, + "lng": -98.5795, "major": false, - "publishedAt": "2026-04-13T23:01:00.000Z", + "publishedAt": null, "keywordHits": [ - "arrested" + "terrorism", + "attacks", + "arrest", + "extremist" + ], + "terrorismHits": [ + "terrorism", + "counter terrorism", + "terrorist", + "extremist", + "extremism" ], - "terrorismHits": [], "eventType": "context_update", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 4.2, - "freshnessBucket": 2, - "freshUntil": "2026-04-17T23:01:00.000Z", + "priorityScore": 4, + "freshnessBucket": 1, + "freshUntil": "2026-04-09T14:36:11.004Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [], @@ -7260,580 +7031,447 @@ "isDuplicateOf": null }, { - "id": "gnet-research-0", - "fusedIncidentId": "fusion-f866c9fb68940c92", - "title": "Beyond The Clan: Identity Formation, Influence, And Extremist Milieux In Online Gaming-Adjacent Spaces", + "id": "uk-ncsc-news-4", + "fusedIncidentId": "fusion-5ad99d9f874d567d", + "title": "World-First NCSC-Engineered Device Secures Vulnerable Display Links", "location": "United Kingdom", "region": "uk", - "lane": "prevention", + "lane": "oversight", "severity": "moderate", "status": "Update", - "actor": "Global Network on Extremism & Technology (GNET) a Main Feed", - "subject": "Global Network on Extremism & Technology (GNET) a Main Feed", - "happenedWhen": "17 Apr 2026, 00:46", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "Over the past two decades, gaming environments have become increasingly social and massified. Multiplayer games allow players to cooperate, compete, and communicate in real time, while adjacent platforms (such as Discord or Twitch) extend interaction beyond ga", - "aiSummary": "Global Network on Extremism & Technology (GNET) a Main Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "Over the past two decades, gaming environments have become increasingly social and massified. Multiplayer games allow players to cooperate, compete, and communicate in real time, while adjacent platforms (such as Discord or Twitch) extend interaction beyond gameplay itself. Scholars studying gaming cultures have long emphasised the importance of these spaces for community building and identity construction (see, for example Gray, […]", + "actor": "National Cyber Security Centre (UK) a News", + "subject": "National Cyber Security Centre (UK) a News", + "happenedWhen": "22 Apr 2026, 13:00", + "confidence": "Verified official source update", + "confidenceScore": 0.84, + "summary": "Silent. Glass, a plug-and-play device, actively blocks any unexpected or malicious HDMI and Display Port connections.", + "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", + "sourceExtract": "Silent. Glass, a plug-and-play device, actively blocks any unexpected or malicious HDMI and Display Port connections.", "peopleInvolved": [], - "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/17/beyond-the-clan-identity-formation-influence-and-extremist-milieux-in-online-gaming-adjacent-spaces/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "source": "National Cyber Security Centre (UK) a News", + "sourceUrl": "https://www.ncsc.gov.uk/news/world-first-ncsc-engineered-device-secures-vulnerable-display-links", + "sourceTier": "context", + "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "queueBucket": "prevention", - "time": "17 Apr 2026, 00:46", + "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueBucket": "oversight", + "time": "22 Apr 2026, 13:00", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-04-16T23:46:13.000Z", + "publishedAt": "2026-04-22T12:00:00.000Z", "keywordHits": [ - "extremist" - ], - "terrorismHits": [ - "extremist" + "device" ], - "eventType": "prevention_update", + "terrorismHits": [], + "eventType": "oversight_update", "geoPrecision": "country", - "isOfficial": false, - "priorityScore": 3.3, - "freshnessBucket": 2, - "freshUntil": "2026-04-24T23:46:13.000Z", + "isOfficial": true, + "priorityScore": 3.55, + "freshnessBucket": 1, + "freshUntil": "2026-04-30T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-f866c9fb68940c92", - "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/17/beyond-the-clan-identity-formation-influence-and-extremist-milieux-in-online-gaming-adjacent-spaces/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-16T23:46:13.000Z", - "confidence": "Research or analytical source" + "fusedIncidentId": "fusion-5ad99d9f874d567d", + "source": "National Cyber Security Centre (UK) a News", + "sourceUrl": "https://www.ncsc.gov.uk/news/world-first-ncsc-engineered-device-secures-vulnerable-display-links", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": "2026-04-22T12:00:00.000Z", + "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-f866c9fb68940c92" + "isDuplicateOf": "fusion-5ad99d9f874d567d" }, { - "id": "telegraph-world-news-1", - "fusedIncidentId": "fusion-509851d9a90678ff", - "title": "IDF Must Allow Women To Serve In Special Forces, Court Rules", - "location": "Jerusalem", + "id": "pst-no-english-2", + "fusedIncidentId": "fusion-58743b394d28e45f", + "title": "Read More About Our Areas Of Responsibility.", + "location": "Europe", "region": "europe", - "lane": "context", + "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "The Telegraph a World News", - "subject": "The Telegraph a World News", - "happenedWhen": "14 Apr 2026, 12:24", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "Ruling comes as Israeli military faces recruitment crisis amid ultra-Orthodox men’s de facto exemption from service Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, bas", - "aiSummary": "The Telegraph a World News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Ruling comes as Israeli military faces recruitment crisis amid ultra-Orthodox men’s de facto exemption from service Copy link twitter facebook whatsapp email Copy link twitter facebook whatsapp email Henry Bodkin is The Telegraph’s Jerusalem Correspondent, based in Israel. He has reported on the Israel-Hamas war, terrorism, Israeli politics, life in the Palestinian territories and Middle East relations. He previously worked as a Senior Reporter, a Health Correspondent, and a News Reporter for The Telegraph.", + "actor": "PST (Norway) English reporting page", + "subject": "PST (Norway) English reporting page", + "happenedWhen": "Source date unconfirmed", + "confidence": "Verified official source update", + "confidenceScore": 0.76, + "summary": "What types of issues does PST deal with? PST works to prevent and respond to incidents that could represent a threat to national security. We have particular responsibility for terrorism, e.g. radicalisation and extremism; threats against, for example, politic", + "aiSummary": "PST (Norway) English reporting page has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "What types of issues does PST deal with? PST works to prevent and respond to incidents that could represent a threat to national security. We have particular responsibility for terrorism, e.g. radicalisation and extremism; threats against, for example, politicians and other dignitaries; espionage, e.g. the recruitment of agents or cyber-attacks; sabotage, e.g. attacks on dams or IT systems, and the proliferation of w", "peopleInvolved": [], - "source": "The Telegraph a World News", - "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/14/idf-must-allow-women-to-serve-in-special-forces-court-rules/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "source": "PST (Norway) English reporting page", + "sourceUrl": "http://www-prod.pst.no/om-pst/", + "sourceTier": "context", + "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueBucket": "context", - "time": "14 Apr 2026, 12:24", - "lat": 31.7683, - "lng": 35.2137, + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "time": "Source date unconfirmed", + "lat": 54, + "lng": 15, "major": false, - "publishedAt": "2026-04-14T11:24:00.000Z", + "publishedAt": null, "keywordHits": [ - "terrorism" + "terrorism", + "attacks", + "threat" ], "terrorismHits": [ - "terrorism" + "terrorism", + "extremism", + "radicalisation" ], - "eventType": "context_update", - "geoPrecision": "city", - "isOfficial": false, - "priorityScore": 3.3, - "freshnessBucket": 2, - "freshUntil": "2026-04-18T11:24:00.000Z", + "eventType": "prevention_update", + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": 3.4, + "freshnessBucket": 1, + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-509851d9a90678ff", - "source": "The Telegraph a World News", - "sourceUrl": "https://www.telegraph.co.uk/world-news/2026/04/14/idf-must-allow-women-to-serve-in-special-forces-court-rules/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-14T11:24:00.000Z", - "confidence": "Research or analytical source" + "fusedIncidentId": "fusion-58743b394d28e45f", + "source": "PST (Norway) English reporting page", + "sourceUrl": "http://www-prod.pst.no/om-pst/", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, + "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-509851d9a90678ff" + "isDuplicateOf": "fusion-58743b394d28e45f" }, { - "id": "met-police-latest-news-1", - "fusedIncidentId": "fusion-79c8b34c14d07dd5", - "title": "Eight Arrests Made By Counter Terrorism Policing London", - "location": "Golders Green, London, UK", - "region": "london", - "lane": "incidents", - "severity": "critical", - "status": "Charged", - "actor": "Metropolitan Police - Latest News", - "subject": "Metropolitan Police - Latest News", - "happenedWhen": "21 Apr 2026, 13:00", + "id": "gov-uk-terrorism-national-emergency-0", + "fusedIncidentId": "fusion-ab45d0eca7a23669", + "title": "On The MI5 Website", + "location": "Northern Ireland, UK", + "region": "uk", + "lane": "prevention", + "severity": "moderate", + "status": "Update", + "actor": "GOV.UK - Terrorism National Emergency", + "subject": "GOV.UK - Terrorism National Emergency", + "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", - "confidenceScore": 0.94, - "summary": "News - 21 April 2026 13:00 Share Counter Terrorism Policing (CTP) officers investigating a series of incidents including several arson attacks in London have made a further eight arrests. Seven of these arrests, carried out in the past 48 hours, are part of a ", - "aiSummary": "News - 21 April 2026 13:00 Share Counter Terrorism Policing (CTP) officers investigating a series of incidents including several arson attacks in London have made a further eight arrests. Seven of these arrests, carried out in the past 48 hours, are part of a proactive investigation into alleged conspiracy to commit arson. At this time, while it is believed that the intended target of this conspiracy is a venue related to the Jewish community, the specific target or venue is not known. Detectives from CTP London arrested three men, aged 24, 25 and 26, in Harpenden shortly after 21.00hrs on Sunday, 19 April. They were taken into custody before being released on bail. On Monday, 20 April, a 25-year-old man was arrested in Stevenage. A 26-year-old man, and two women, aged 50 and 59, were also arrested in a car near Birmingham. They have all been taken to a London police station where they currently remain in custody.", - "sourceExtract": "News - 21 April 2026 13:00 Share Counter Terrorism Policing (CTP) officers investigating a series of incidents including several arson attacks in London have made a further eight arrests. Seven of these arrests, carried out in the past 48 hours, are part of a proactive investigation into alleged conspiracy to commit arson. At this time, while it is believed that the intended target of this conspiracy is a venue related to the Jewish community, the specific target or venue is not known. Detectives from CTP London arrested three men, aged 24, 25 and 26, in Harpenden shortly after 21.00hrs on Sunday, 19 April. They were taken into custody before being released on bail. On Monday, 20 April, a 25-year-old man was arrested in Stevenage. A 26-year-old man, and two women, aged 50 and 59, were also arrested in a car near Birmingham. They have all been taken to a London police station where they currently remain in custody. This morning (Tuesday, 21 April), a 39-year-old man was arrested at an address in Ealing under section 41 of the Terrorism Act 2000 and taken into custody. This arrest was connected to a CTP London investigation following the discovery of jars of a non-hazardous substance in Kensington Gardens on Friday, 17 April. As part of this investigation, a search is ongoing at a premises in east London. Since the attack on the Hatzola ambulances in Golders Green on 23 March, CTP officers have now arrested a total of 23 people. Eight people have been charged with arson-related offences, while 13 people remain in custody or on bail under active police investigation. Deputy Assistant Commissioner Vicki Evans, the Senior National Co-ordinator of Counter Terrorism Policing, said: “We’ve made very clear that we will be relentless in our pursuit of anyone involved in carrying ", - "peopleInvolved": [ - "Vicki Evans: Official. Deputy Assistant Commissioner Vicki Evans, the Senior National Co-ordinator of Counter Terrorism Policing, said: “We’ve made very clear that we will be relentless in our pursuit of anyone involved in carrying out or planning these arson attacks." - ], - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/eight-arrests-made-by-counter-terrorism-policing-london-508480", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "incidentTrack": "case", - "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", - "queueReason": "Non-trigger source awaiting corroboration", - "queueBucket": "quarantine", - "time": "21 Apr 2026, 13:00", - "lat": 51.5722, - "lng": -0.1941, + "confidenceScore": 0.76, + "summary": "The threat level indicates the likelihood of a terrorist attack in the UK. National threat level The threat to the UK (England, Wales, Scotland and Northern Ireland) from terrorism is substantial. Northern Ireland-related threat level The threat to Northern Ir", + "aiSummary": "GOV.UK - Terrorism National Emergency has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "The threat level indicates the likelihood of a terrorist attack in the UK. National threat level The threat to the UK (England, Wales, Scotland and Northern Ireland) from terrorism is substantial. Northern Ireland-related threat level The threat to Northern Ireland from Northern Ireland-related terrorism is substantial. Threat levels There are 5 levels of threat: low - an attack is highly unlikely moderate - an attac", + "peopleInvolved": [], + "source": "GOV.UK - Terrorism National Emergency", + "sourceUrl": "https://www.mi5.gov.uk/threat-levels", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "incidentTrack": "", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "time": "Source date unconfirmed", + "lat": 54.7877, + "lng": -6.4923, "major": false, - "publishedAt": "2026-04-21T12:00:00.000Z", + "publishedAt": null, "keywordHits": [ "terrorism", "attack", - "attacks", - "arrest", - "arrested", - "charged", - "charged with" + "threat" ], "terrorismHits": [ "terrorism", - "counter terrorism" + "terrorist" ], - "eventType": "charge", + "eventType": "prevention_update", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 12.1, + "priorityScore": 3.4, "freshnessBucket": 1, - "freshUntil": "2026-05-05T12:00:00.000Z", + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-79c8b34c14d07dd5", - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/eight-arrests-made-by-counter-terrorism-policing-london-508480", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-21T12:00:00.000Z", - "confidence": "Verified official source update" - }, - { - "fusedIncidentId": "fusion-79c8b34c14d07dd5", - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/eight-arrests-made-by-counter-terrorism-policing-london-508480", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-21T12:00:00.000Z", + "fusedIncidentId": "fusion-ab45d0eca7a23669", + "source": "GOV.UK - Terrorism National Emergency", + "sourceUrl": "https://www.mi5.gov.uk/threat-levels", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, "confidence": "Verified official source update" } ], - "corroborationCount": 2, - "isDuplicateOf": "fusion-79c8b34c14d07dd5" + "corroborationCount": 1, + "isDuplicateOf": "fusion-ab45d0eca7a23669" }, { - "id": "met-police-latest-news-1", - "fusedIncidentId": "fusion-61fc8ba12c50b250", - "title": "Three Charged Over Golders Green Arson Attack", - "location": "Golders Green, London, UK", - "region": "london", - "lane": "incidents", - "severity": "critical", - "status": "Charged", - "actor": "Metropolitan Police - Latest News", - "subject": "Metropolitan Police - Latest News", - "happenedWhen": "03 Apr 2026, 22:10", + "id": "gov-uk-terrorism-national-emergency-2", + "fusedIncidentId": "fusion-8dee7cd7618b5f1e", + "title": "Home", + "location": "Northern Ireland, UK", + "region": "uk", + "lane": "prevention", + "severity": "moderate", + "status": "Update", + "actor": "GOV.UK - Terrorism National Emergency", + "subject": "GOV.UK - Terrorism National Emergency", + "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", - "confidenceScore": 0.92, - "summary": "News - 3 April 2026 22:10 Share Three people arrested in connection with a Counter Terrorism Policing (CTP) investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green, have been charged. [C] Hamza Iqbal 20 (28.1", - "aiSummary": "News - 3 April 2026 22:10 Share Three people arrested in connection with a Counter Terrorism Policing (CTP) investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green, have been charged. [C] Hamza Iqbal 20 (28.10.05) and [D] Rehan Khan 19 (11.02.07), both British nationals from Leyton, and [E] a 17-year-old boy, a dual British and Pakistani national from Walthamstow, have been charged, following authorisation from the Crown Prosecution Service, with arson being reckless as to whether life would be endangered contrary to Section 1(2) – Criminal Damage Act 1971 They were all arrested on Wednesday, 1 April at different locations in east London and officers from Counter Terrorism Policing London have carried out searches at these addresses. The arrests and charges are linked to the ongoing investigation into an arson attack at approximately 01:35hrs on Monday, 23 March. Four ambulances from Hatzola, a volunteer-led ambulance service operating in the Golders Green area of north London, were set on fire during the incident. Iqbal, Khan and the 17-year-old are due to appear at Westminster Magistrates’ Court on Saturday, 4 April. Commander Helen Flanagan, Head of Counter Terrorism Policing London, which is leading the investigation said: “Since this appalling attack last week, we have been working continuously to investigate and identify those responsible. The investigation has now reached a stage where three people have been charged and they will now appear in court. “I want to reiterate that the support we had from the local community since this attack took place has been incredible, and we will continue to work closely with local policing colleagues to do everything we can to keep the public safe.” At this stage, the incident has not been declared as terrorism, but due to the circumstances of the incident, along with the specialist capability within CTP, the investigation is being led by detectives from CTP London.", - "sourceExtract": "News - 3 April 2026 22:10 Share Three people arrested in connection with a Counter Terrorism Policing (CTP) investigation into an arson attack on volunteer-led ambulances run by the Jewish community in Golders Green, have been charged. [C] Hamza Iqbal 20 (28.10.05) and [D] Rehan Khan 19 (11.02.07), both British nationals from Leyton, and [E] a 17-year-old boy, a dual British and Pakistani national from Walthamstow, have been charged, following authorisation from the Crown Prosecution Service, with arson being reckless as to whether life would be endangered contrary to Section 1(2) – Criminal Damage Act 1971 They were all arrested on Wednesday, 1 April at different locations in east London and officers from Counter Terrorism Policing London have carried out searches at these addresses. The arrests and charges are linked to the ongoing investigation into an arson attack at approximately 01:35hrs on Monday, 23 March. Four ambulances from Hatzola, a volunteer-led ambulance service operating in the Golders Green area of north London, were set on fire during the incident. Iqbal, Khan and the 17-year-old are due to appear at Westminster Magistrates’ Court on Saturday, 4 April. Commander Helen Flanagan, Head of Counter Terrorism Policing London, which is leading the investigation said: “Since this appalling attack last week, we have been working continuously to investigate and identify those responsible. The investigation has now reached a stage where three people have been charged and they will now appear in court. “I want to reiterate that the support we had from the local community since this attack took place has been incredible, and we will continue to work closely with local policing colleagues to do everything we can to keep the public safe.” At this stage, the incident ", - "peopleInvolved": [ - "Helen Flanagan: Official. Commander Helen Flanagan, Head of Counter Terrorism Policing London, which is leading the investigation said: “Since this appalling attack last week, we have been working continuously to investigate and identify those responsible.", - "North West London: Witness. Detective Chief Superintendent Luke Williams, who leads policing in North West London said: “We know that local community concerns continue to remain high – particularly for our Jewish communities in the Pas" - ], - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/three-charged-over-golders-green-arson-attack-507955", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "incidentTrack": "case", - "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", - "queueReason": "Non-trigger source awaiting corroboration", - "queueBucket": "quarantine", - "time": "03 Apr 2026, 22:10", - "lat": 51.5722, - "lng": -0.1941, + "confidenceScore": 0.76, + "summary": "Printable version The threat level indicates the likelihood of a terrorist attack in the UK. The threat to the UK (England, Wales, Scotland and Northern Ireland) from terrorism is substantial. The threat to Northern Ireland from Northern Ireland-related terror", + "aiSummary": "GOV.UK - Terrorism National Emergency has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "Printable version The threat level indicates the likelihood of a terrorist attack in the UK. The threat to the UK (England, Wales, Scotland and Northern Ireland) from terrorism is substantial. The threat to Northern Ireland from Northern Ireland-related terrorism is substantial. There are 5 levels of threat: The level is set by the Joint Terrorism Analysis Centre and the Security Service (MI5). Threat levels do not have an expiry date. They can change at any time as different information becomes available. Get more information about terrorism threat levels in the UK on the MI5 website. You can also check the government’s travel advice for different countries. The Security Service (MI5) is responsible for protecting the UK against threats to national security. The Office for Security and Counter-Terrorism coordinates the government’s response in case of a terrorist incident. Counter-terrorism laws are enforced by the police.", + "peopleInvolved": [], + "source": "GOV.UK - Terrorism National Emergency", + "sourceUrl": "https://www.gov.uk/terrorism-national-emergency/print", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "incidentTrack": "", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "time": "Source date unconfirmed", + "lat": 54.7877, + "lng": -6.4923, "major": false, - "publishedAt": "2026-04-03T21:10:00.000Z", + "publishedAt": null, "keywordHits": [ "terrorism", "attack", - "arrested", - "charged" + "threat" ], "terrorismHits": [ "terrorism", - "counter terrorism" + "terrorist" ], - "eventType": "charge", + "eventType": "prevention_update", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 11.5, + "priorityScore": 3.4, "freshnessBucket": 1, - "freshUntil": "2026-04-17T21:10:00.000Z", + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-61fc8ba12c50b250", - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/three-charged-over-golders-green-arson-attack-507955", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-03T21:10:00.000Z", - "confidence": "Verified official source update" - }, - { - "fusedIncidentId": "fusion-61fc8ba12c50b250", - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/three-charged-over-golders-green-arson-attack-507955", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-03T21:10:00.000Z", + "fusedIncidentId": "fusion-8dee7cd7618b5f1e", + "source": "GOV.UK - Terrorism National Emergency", + "sourceUrl": "https://www.gov.uk/terrorism-national-emergency/print", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, "confidence": "Verified official source update" } ], - "corroborationCount": 2, - "isDuplicateOf": "fusion-61fc8ba12c50b250" + "corroborationCount": 1, + "isDuplicateOf": "fusion-8dee7cd7618b5f1e" }, { - "id": "met-police-news-6", - "fusedIncidentId": "fusion-4d5e7ff00941dc7c", - "title": "UPDATED: Two Arrests Made In Finchley Attempted Arson Investigation", - "location": "London, UK", - "region": "london", - "lane": "incidents", - "severity": "critical", - "status": "Arrest", - "actor": "Metropolitan Police Service a News", - "subject": "Metropolitan Police Service a News", - "happenedWhen": "15 Apr 2026, 20:43", + "id": "gov-uk-proscribed-terrorist-orgs-0", + "fusedIncidentId": "fusion-3a4bc58bbd6da4d2", + "title": "Home", + "location": "United Kingdom", + "region": "uk", + "lane": "sanctions", + "severity": "elevated", + "status": "Update", + "actor": "GOV.UK a Proscribed Terrorist Organisations", + "subject": "GOV.UK a Proscribed Terrorist Organisations", + "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", - "confidenceScore": 0.9, - "summary": "News - 15 April 2026 20:43 Share Two people have been arrested in connection with an attempted arson attack on a synagogue in Finchley. The incident is being treated as an antisemitic hate crime. At 16:47hrs on Wednesday, 15 April, police arrested a 47-year-ol", - "aiSummary": "News - 15 April 2026 20:43 Share Two people have been arrested in connection with an attempted arson attack on a synagogue in Finchley. The incident is being treated as an antisemitic hate crime. At 16:47hrs on Wednesday, 15 April, police arrested a 47-year-old woman at an address in Kings Langley, Hertfordshire, on suspicion of arson endangering life. At 19:15hrs, officers arrested a 46-year-old man in the Watford area on suspicion of arson endangering life. The arrests were made by officers from the Met’s North West Area Command Unit. Both suspects were taken into custody before being released on bail to a date in July. It follows an investigation into the attempted attack on a synagogue in Fallow Court Avenue, Finchley. The investigation is now being led by detectives from Counter Terrorism Policing London.", - "sourceExtract": "News - 15 April 2026 20:43 Share Two people have been arrested in connection with an attempted arson attack on a synagogue in Finchley. The incident is being treated as an antisemitic hate crime. At 16:47hrs on Wednesday, 15 April, police arrested a 47-year-old woman at an address in Kings Langley, Hertfordshire, on suspicion of arson endangering life. At 19:15hrs, officers arrested a 46-year-old man in the Watford area on suspicion of arson endangering life. The arrests were made by officers from the Met’s North West Area Command Unit. Both suspects were taken into custody before being released on bail to a date in July. It follows an investigation into the attempted attack on a synagogue in Fallow Court Avenue, Finchley. The investigation is now being led by detectives from Counter Terrorism Policing London. CCTV obtained by detectives during the course of the investigation today shows that two suspects, who were dressed in dark clothing and balaclavas, gained entry to the synagogue’s grounds at around 00:09hrs on Wednesday, 15 April. They were seen to place two glass bottles next to the synagogue’s windows and threw a brick at the building. One of the bottles, which contained a substance suspected to be petrol, was smashed by the brick. Neither of the bottles were ignited and the suspects fled the scene. No damage was caused to the building and no injuries were reported.", + "confidenceScore": 0.76, + "summary": "Government services may set additional cookies and, if so, will have their own cookie policy and banner. Cookies are files saved on your phone, tablet or computer when you visit a website. We use cookies to collect and store information about how you use the G", + "aiSummary": "GOV.UK a Proscribed Terrorist Organisations has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", + "sourceExtract": "Government services may set additional cookies and, if so, will have their own cookie policy and banner. Cookies are files saved on your phone, tablet or computer when you visit a website. We use cookies to collect and store information about how you use the GOV.UK website and government digital services, such as the pages you visit. 'Government digital services' means any page with service.gov.uk in the URL. This page has a brief explanation of each type of cookie we use. If you want more details, read our detailed cookie information. We use Javascript to set most of our cookies. Unfortunately Javascript is not running on your browser, so you cannot change your settings on this page. You can try: You can also remove any previously stored cookies through your browser. Look for 'Preferences', 'Settings', or 'Options' in your browser menu. We use 4 types of cookie. You can choose which cookies you're happy for us to use. We use Google Analytics cookies to measure how you use GOV.UK and government digital services. These cookies collect information about: We also use LUX Real User Monitoring software cookies from Speed. Curve to measure your web performance experience while visiting GOV.UK. LUX software cookies collect and store information about how well pages performed on your device, including whether there were any performance bottlenecks or Java. Script errors. We do not allow Google or Speed. Curve to use or share this data for their own purposes.", "peopleInvolved": [], - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/further-arrests-after-attempted-finchley-synagogue-arson-attack-508304", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "incidentTrack": "case", - "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", - "queueReason": "Non-trigger source awaiting corroboration", - "queueBucket": "quarantine", - "time": "15 Apr 2026, 20:43", - "lat": 51.5074, - "lng": -0.1278, + "source": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/help/cookies", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "incidentTrack": "", + "laneReason": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", + "time": "Source date unconfirmed", + "lat": 54.5, + "lng": -2.5, "major": false, - "publishedAt": "2026-04-15T19:43:38.000Z", + "publishedAt": null, "keywordHits": [ - "terrorism", - "attack", - "arrested" - ], - "terrorismHits": [ - "terrorism", - "counter terrorism" + "device" ], - "eventType": "arrest", - "geoPrecision": "region", + "terrorismHits": [], + "eventType": "sanctions_update", + "geoPrecision": "country", "isOfficial": true, - "priorityScore": 10.9, + "priorityScore": 3.2, "freshnessBucket": 1, - "freshUntil": "2026-04-29T19:43:38.000Z", + "freshUntil": "2026-04-16T05:26:53.285Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-4d5e7ff00941dc7c", - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/further-arrests-after-attempted-finchley-synagogue-arson-attack-508304", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-15T19:43:38.000Z", + "fusedIncidentId": "fusion-3a4bc58bbd6da4d2", + "source": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/help/cookies", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-4d5e7ff00941dc7c" + "isDuplicateOf": "fusion-3a4bc58bbd6da4d2" }, { - "id": "met-police-latest-news-2", - "fusedIncidentId": "fusion-d3e64615779eec5c", - "title": "Gang Sentenced For Prison Smuggling Operation", - "location": "London, UK", - "region": "london", - "lane": "incidents", - "severity": "high", - "status": "Arrest", - "actor": "Metropolitan Police - Latest News", - "subject": "Metropolitan Police - Latest News", - "happenedWhen": "02 Apr 2026, 16:02", - "confidence": "Verified official source update", - "confidenceScore": 0.88, - "summary": "News - 2 April 2026 16:02 Share A former prison officer and a gang who smuggled drugs, mobile phones and USB sticks into a prison during visits, have been jailed for a combined 25 years, following a Metropolitan Police investigation. Officers from the Met’s sp", - "aiSummary": "News - 2 April 2026 16:02 Share A former prison officer and a gang who smuggled drugs, mobile phones and USB sticks into a prison during visits, have been jailed for a combined 25 years, following a Metropolitan Police investigation. Officers from the Met’s specialist crime unit began investigating in February 2024, when the Prison Service alerted them to a prison guard at HMP Isis, who had been suspended. The Met investigation uncovered that the prison officer, Jason Thompson, had been involved in smuggling cannabis resin into the prison. He had also been using a burner phone to communicate with members of an organised crime group who are believed to have been responsible for a total of eighteen package drop-offs between February and July 2024. The investigation began with enquiries into a local drugs line operating near several prisons. It uncovered the involvement of the Thompson, which exposed a link between a north London organised crime group and the supply of Class B drugs into the prison. Officers found mobile phones, cannabis, vape oil and USB sticks containing entertainment and pornographic material were being smuggled into prisons. The group arranged supervised visits through the booking system, during which the packages would be transferred into the prison.", - "sourceExtract": "News - 2 April 2026 16:02 Share A former prison officer and a gang who smuggled drugs, mobile phones and USB sticks into a prison during visits, have been jailed for a combined 25 years, following a Metropolitan Police investigation. Officers from the Met’s specialist crime unit began investigating in February 2024, when the Prison Service alerted them to a prison guard at HMP Isis, who had been suspended. The Met investigation uncovered that the prison officer, Jason Thompson, had been involved in smuggling cannabis resin into the prison. He had also been using a burner phone to communicate with members of an organised crime group who are believed to have been responsible for a total of eighteen package drop-offs between February and July 2024. The investigation began with enquiries into a local drugs line operating near several prisons. It uncovered the involvement of the Thompson, which exposed a link between a north London organised crime group and the supply of Class B drugs into the prison. Officers found mobile phones, cannabis, vape oil and USB sticks containing entertainment and pornographic material were being smuggled into prisons. The group arranged supervised visits through the booking system, during which the packages would be transferred into the prison. Once alerted to the smuggling activity, officers began a large-scale, proactive investigation aimed at disrupting the criminal network. This involved the review of over 800 hours’ worth of CCTV and phone material to disrupt the gang. They found the gang would communicate in code, an unheard slang, to avoid detection and would purposely turn off devices and dump them in order to cover their tracks. The operation concluded with officers intercepting one of the packages, which contained cannabis resin on Wed", - "peopleInvolved": [], - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/gang-sentenced-for-prison-smuggling-operation-507930", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "incidentTrack": "case", - "laneReason": "Terror-related case, prosecution, or recognition update kept as incident context.", - "queueReason": "Needs human review", - "time": "02 Apr 2026, 16:02", - "lat": 51.5074, - "lng": -0.1278, - "major": false, - "publishedAt": "2026-04-02T15:02:43.000Z", - "keywordHits": [ - "isis" - ], - "terrorismHits": [ - "isis" - ], - "eventType": "sentencing", - "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 8.7, - "freshnessBucket": 1, - "freshUntil": "2026-04-16T15:02:43.000Z", - "needsHumanReview": true, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-d3e64615779eec5c", - "source": "Metropolitan Police Service a News", - "sourceUrl": "https://news.met.police.uk/news/gang-sentenced-for-prison-smuggling-operation-507930", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-02T15:02:43.000Z", - "confidence": "Verified official source update" - }, - { - "fusedIncidentId": "fusion-d3e64615779eec5c", - "source": "Metropolitan Police - Latest News", - "sourceUrl": "https://news.met.police.uk/news/gang-sentenced-for-prison-smuggling-operation-507930", - "sourceTier": "corroboration", - "reliabilityProfile": "official_general", - "publishedAt": "2026-04-02T15:02:43.000Z", - "confidence": "Verified official source update" - } - ], - "corroborationCount": 2, - "isDuplicateOf": "fusion-d3e64615779eec5c" - }, - { - "id": "dhs-press-releases-0", - "fusedIncidentId": "fusion-e8a752a50499f3b2", - "title": "National Terrorism Advisory System | Homeland Security", - "location": "United States", - "region": "us", - "lane": "context", - "severity": "moderate", + "id": "eu-council-terrorism-sanctions-0", + "fusedIncidentId": "fusion-8696f3a10b432c52", + "title": "The EU'S Response To Terrorism", + "location": "Europe", + "region": "eu", + "lane": "sanctions", + "severity": "elevated", "status": "Update", - "actor": "US Department of Homeland Security - News", - "subject": "US Department of Homeland Security - News", + "actor": "Council of the EU - Sanctions Against Terrorism", + "subject": "Council of the EU - Sanctions Against Terrorism", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", - "confidenceScore": 0.8, - "summary": "The National Terrorism Advisory System (NTAS) is designed to communicate information about terrorist threats by providing timely, detailed information to the American public. All Americans share responsibility for the nation's security, and should always be aw", - "aiSummary": "US Department of Homeland Security - News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "The National Terrorism Advisory System (NTAS) is designed to communicate information about terrorist threats by providing timely, detailed information to the American public. All Americans share responsibility for the nation's security, and should always be aware of the heightened risk of terrorist attack in the United States and what they should do. This page contains current NTAS advisories (both Alerts and Bulletins), archived copies of expired advisories, and additional information on the NTAS system. DHS replaced the color-coded alerts of the Homeland Security Advisory System (HSAS) with the National Terrorism Advisory System (NTAS) in 2011. The ongoing Iran conflict is causing a heightened threat environment in the United States. Low-level cyber attacks against US networks by pro-Iranian hacktivists are likely, and cyber actors affiliated with the Iranian government may conduct attacks against US networks. Iran also has a long-standing commitment to target US Government officials it views as responsible for the death of an Iranian military commander killed in January 2020. The likelihood of violent extremists in the Homeland independently mobilizing to violence in response to the conflict would likely increase if Iranian leadership issued a religious ruling calling for retaliatory violence against targets in the Homeland. Multiple recent Homeland terrorist attacks have been motivated by anti-Semitic or anti-Israel sentiment, and the ongoing Israel-Iran conflict could contribute to US-based individuals plotting additional attacks. En español Sa Tagalog 한국어로 trong tiếng việt بالعربية 读中文 讀中文 ในภาษาไทย The United States remains in a heightened threat environment. Lone offenders and small groups motivated by a range of ideological beliefs and personal grievances conti", + "confidenceScore": 0.76, + "summary": "The EU's response to terrorism The EU's response to terrorism", + "aiSummary": "Council of the EU - Sanctions Against Terrorism has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", + "sourceExtract": "The EU's response to terrorism The EU's response to terrorism", "peopleInvolved": [], - "source": "US Department of Homeland Security - News", - "sourceUrl": "https://www.dhs.gov/national-terrorism-advisory-system", + "source": "Council of the EU - Sanctions Against Terrorism", + "sourceUrl": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "laneReason": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", "time": "Source date unconfirmed", - "lat": 39.8283, - "lng": -98.5795, + "lat": 54, + "lng": 15, "major": false, "publishedAt": null, "keywordHits": [ - "terrorism", - "attack", - "attacks", - "extremist", - "threat" + "terrorism" ], "terrorismHits": [ - "terrorism", - "terrorist", - "extremist" + "terrorism" ], - "eventType": "context_update", - "geoPrecision": "region", + "eventType": "sanctions_update", + "geoPrecision": "country", "isOfficial": true, - "priorityScore": 4.6, + "priorityScore": 3.2, "freshnessBucket": 1, - "freshUntil": "2026-04-10T05:26:53.285Z", + "freshUntil": "2026-04-15T20:35:56.070Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-e8a752a50499f3b2", - "source": "US Department of Homeland Security - News", - "sourceUrl": "https://www.dhs.gov/national-terrorism-advisory-system", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-e8a752a50499f3b2" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "protectuk-1", - "fusedIncidentId": "fusion-cbf1ce4f666d836c", - "title": "ACT For Local Authorities | ProtectUK", - "location": "United Kingdom", - "region": "uk", - "lane": "prevention", - "severity": "moderate", + "id": "eu-council-terrorism-sanctions-3", + "fusedIncidentId": "fusion-ccfbf88bc86cca84", + "title": "Decision - EU - 2026/455 - EN - EUR-Lex", + "location": "Europe", + "region": "eu", + "lane": "sanctions", + "severity": "elevated", "status": "Update", - "actor": "ProtectUK (NPSA) a Protective Security Guidance", - "subject": "ProtectUK (NPSA) a Protective Security Guidance", + "actor": "Council of the EU - Sanctions Against Terrorism", + "subject": "Council of the EU - Sanctions Against Terrorism", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", - "confidenceScore": 0.8, - "summary": "ACT for Local Authorities is an initiative led by Counter Terrorism Policing (CTP) to support local government partners to embed counter terrorism considerations into their day-to-day work. Local authorities have the best knowledge of their local area, and eit", - "aiSummary": "ProtectUK (NPSA) a Protective Security Guidance has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "ACT for Local Authorities is an initiative led by Counter Terrorism Policing (CTP) to support local government partners to embed counter terrorism considerations into their day-to-day work. Local authorities have the best knowledge of their local area, and either own or have influence over the land and activities which occur in public spaces. By considering and mitigating terrorist risks through protective security and preparedness activity, with the support of counter terrorism experts, local authorities are in a unique position to enhance the safety and security of public spaces for their communities. The strategic context ACT for Local Authorities specifically focuses on the Protect and Prepare elements of the UK government’s counter terrorism strategy (known as CONTEST) and has been designed to support this work at a local level. Under CONTEST, the Protect strand aims to ‘strengthen the United Kingdom’s protection against terrorist attacks’ while the Prepare strand aims to ‘minimise the impact of an attack and reduce the likelihood of further attacks'. ACT for Local Authorities is separate, yet complementary, to the Terrorism (Protection of Premises) Act 2025, also known as Martyn’s Law. While Martyn’s Law places greater responsibility on individual qualifying premises and events to enhance their counter terrorism planning, ACT for Local Authorities addresses protective security and preparedness planning holistically across public spaces, which are either owned, managed, or influenced by local authorities. The terrorist threat The ACT for Local Authorities initiative is borne out of recognition of the changing terrorist threat landscape. This landscape is now dominated by individuals acting without the direction or material support of organised groups. Since 2014, a", + "confidenceScore": 0.76, + "summary": "Decision on restrictive measures to combat terrorism (EU Official Journal)", + "aiSummary": "Council of the EU - Sanctions Against Terrorism has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", + "sourceExtract": "Decision on restrictive measures to combat terrorism (EU Official Journal)", "peopleInvolved": [], - "source": "ProtectUK (NPSA) a Protective Security Guidance", - "sourceUrl": "https://www.protectuk.police.uk/act-local-authorities", + "source": "Council of the EU - Sanctions Against Terrorism", + "sourceUrl": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=OJ:L_202600455", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", + "laneReason": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", "time": "Source date unconfirmed", - "lat": 54.5, - "lng": -2.5, + "lat": 54, + "lng": 15, "major": false, "publishedAt": null, "keywordHits": [ - "terrorism", - "attack", - "attacks", - "threat" + "terrorism" ], "terrorismHits": [ - "terrorism", - "counter terrorism", - "terrorist" + "terrorism" ], - "eventType": "prevention_update", + "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 4, + "priorityScore": 3.2, "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "freshUntil": "2026-04-15T20:35:56.070Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-cbf1ce4f666d836c", - "source": "ProtectUK (NPSA) a Protective Security Guidance", - "sourceUrl": "https://www.protectuk.police.uk/act-local-authorities", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-cbf1ce4f666d836c" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "state-dept-terrorism-3", - "fusedIncidentId": "fusion-4279d368d8d4a13f", - "title": "Programs And Initiatives - United States Department Of State", - "location": "United States", - "region": "us", + "id": "icct-perspectives-on-terrorism-1", + "fusedIncidentId": "fusion-fccda56bb2abdae0", + "title": "Lexical Patterns In (Non-)Violent Extremist Content Online: A Linguistic Comparison Of Jihadist And Salafist Discourse | Perspectives On Terrorism", + "location": "Europe", + "region": "europe", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "US State Department a Bureau of Counterterrorism", - "subject": "US State Department a Bureau of Counterterrorism", + "actor": "Perspectives on Terrorism (ICCT) a Journal", + "subject": "Perspectives on Terrorism (ICCT) a Journal", "happenedWhen": "Source date unconfirmed", - "confidence": "Verified official source update", - "confidenceScore": 0.8, - "summary": "Bureau of Counterterrorism The Bureau of Counterterrorism (CT) works to strengthen partnerships, civilian capacity, and information sharing around the world to counter evolving terrorist threats and prevent the spread of violent extremism. CT designs, manages,", - "aiSummary": "US State Department a Bureau of Counterterrorism has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Bureau of Counterterrorism The Bureau of Counterterrorism (CT) works to strengthen partnerships, civilian capacity, and information sharing around the world to counter evolving terrorist threats and prevent the spread of violent extremism. CT designs, manages, and oversees foreign assistance to build the civilian capabilities of foreign government partners to counter terrorism and violent extremism in an effective and sustainable fashion. CT seeks to build law enforcement and judicial capabilities to mitigate attacks, disrupt terrorist transit, and arrest, investigate, prosecute, and incarcerate terrorists in accordance with the rule of law. To bolster these efforts, CT seeks to promote the leadership of other countries to build capacity in third countries in their regions. CT also seeks to strengthen partnerships and initiatives involving government and non-governmental actors to counter sources of violent extremist messaging, narratives, and recruitment. Since its creation in 1983, the Antiterrorism Assistance (ATA) program has served as the primary provider of U.S. government antiterrorism training and equipment to law-enforcement agencies of partner nations throughout the world, and has delivered counterterrorism training to more than 90,000 law enforcement personnel from 154 countries. From prevention of terrorist attacks to responding to and mitigating terrorist attacks, ATA helps partner nations build critical capabilities across a wide spectrum of counterterrorism skills. ATA will continue to provide training courses, consultations, mentorships, seminars, and equipment relevant to investigations, border security, protection of critical targets, leadership and management, regional coordination and cooperation, critical incident response and management, and cyber ", + "confidence": "Research or analytical source", + "confidenceScore": 0.64, + "summary": "In an age of rapid social and technological change, digital trace analysis is crucial for law enforcement and intelligence agencies. The massive volume, variety, and velocity of digital data pose a significant challenge in identifying relevant and unsuitable c", + "aiSummary": "Perspectives on Terrorism (ICCT) a Journal has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "In an age of rapid social and technological change, digital trace analysis is crucial for law enforcement and intelligence agencies. The massive volume, variety, and velocity of digital data pose a significant challenge in identifying relevant and unsuitable content. This study addresses these challenges by employing a lexicon-based classification to distinguish violent jihadist discourses from non-violent Salafist discourses. Using open-source transcriptions of jihadist and Salafist videos originally produced, translated or subtitled in English, the study identifies linguistic themes through the LIWC Grievance dictionary. Key findings indicate that Impostor, Soldier, and Weaponry themes are statistically discriminant for all violent jihadist discourses. Furthermore, group-specific markers emerged, such as Deadline for al-Qaeda, and Suicide, Surveillance, and Violence for the Islamic State. While these tools offer significant potential for large-scale data processing, the study emphasises the necessity of qualitative contextual analysis to mitigate algorithmic biases and false positives. Photo credit: federico stevanin/Shutterstock.com", "peopleInvolved": [], - "source": "US State Department a Bureau of Counterterrorism", - "sourceUrl": "https://www.state.gov/bureau-of-counterterrorism-programs-and-initiatives/", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "source": "Perspectives on Terrorism (ICCT) a Journal", + "sourceUrl": "https://pt.icct.nl/article/lexical-patterns-non-violent-extremist-content-online-linguistic-comparison-jihadist-and", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "time": "Source date unconfirmed", - "lat": 39.8283, - "lng": -98.5795, + "lat": 54, + "lng": 15, "major": false, "publishedAt": null, "keywordHits": [ "terrorism", - "attacks", - "arrest", - "extremist" + "extremist", + "islamic state", + "al-qaeda" ], "terrorismHits": [ "terrorism", - "counter terrorism", - "terrorist", "extremist", - "extremism" + "jihadist", + "islamic state", + "al-qaeda" ], "eventType": "context_update", - "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 4, + "geoPrecision": "country", + "isOfficial": false, + "priorityScore": 3.1, "freshnessBucket": 1, - "freshUntil": "2026-04-09T14:36:11.004Z", + "freshUntil": "2026-04-09T21:34:40.140Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [], @@ -7841,9 +7479,9 @@ "isDuplicateOf": null }, { - "id": "uk-ncsc-news-4", - "fusedIncidentId": "fusion-5ad99d9f874d567d", - "title": "World-First NCSC-Engineered Device Secures Vulnerable Display Links", + "id": "uk-ncsc-news-2", + "fusedIncidentId": "fusion-7231c61429475334", + "title": "Cyber Chief: UK Faces \"Perfect Storm\" For Cyber Security", "location": "United Kingdom", "region": "uk", "lane": "oversight", @@ -7851,105 +7489,100 @@ "status": "Update", "actor": "National Cyber Security Centre (UK) a News", "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "22 Apr 2026, 13:00", + "happenedWhen": "21 Apr 2026, 13:00", "confidence": "Verified official source update", "confidenceScore": 0.84, - "summary": "Silent. Glass, a plug-and-play device, actively blocks any unexpected or malicious HDMI and Display Port connections.", + "summary": "As the technology landscape develops, the definition of cyber security is expanding with it.", "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "Silent. Glass, a plug-and-play device, actively blocks any unexpected or malicious HDMI and Display Port connections.", + "sourceExtract": "As the technology landscape develops, the definition of cyber security is expanding with it.", "peopleInvolved": [], "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/world-first-ncsc-engineered-device-secures-vulnerable-display-links", + "sourceUrl": "https://www.ncsc.gov.uk/news/cyber-chief-uk-faces-perfect-storm-for-cyber-security", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", "queueBucket": "oversight", - "time": "22 Apr 2026, 13:00", + "time": "21 Apr 2026, 13:00", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-04-22T12:00:00.000Z", - "keywordHits": [ - "device" - ], + "publishedAt": "2026-04-21T12:00:00.000Z", + "keywordHits": [], "terrorismHits": [], "eventType": "oversight_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 3.55, + "priorityScore": 2.95, "freshnessBucket": 1, - "freshUntil": "2026-04-30T12:00:00.000Z", + "freshUntil": "2026-04-29T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-5ad99d9f874d567d", + "fusedIncidentId": "fusion-7231c61429475334", "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/world-first-ncsc-engineered-device-secures-vulnerable-display-links", + "sourceUrl": "https://www.ncsc.gov.uk/news/cyber-chief-uk-faces-perfect-storm-for-cyber-security", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-04-22T12:00:00.000Z", + "publishedAt": "2026-04-21T12:00:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-5ad99d9f874d567d" + "isDuplicateOf": "fusion-7231c61429475334" }, { - "id": "pst-no-english-2", - "fusedIncidentId": "fusion-58743b394d28e45f", - "title": "Read More About Our Areas Of Responsibility.", - "location": "Europe", - "region": "europe", + "id": "mi5-uk-threat-level-0", + "fusedIncidentId": "fusion-ca887123e34a6fd9", + "title": "Current Threat Level: SUBSTANTIAL", + "location": "Northern Ireland, UK", + "region": "uk", "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "PST (Norway) English reporting page", - "subject": "PST (Norway) English reporting page", + "actor": "MI5 (Security Service) a UK Threat Level", + "subject": "MI5 (Security Service) a UK Threat Level", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "What types of issues does PST deal with? PST works to prevent and respond to incidents that could represent a threat to national security. We have particular responsibility for terrorism, e.g. radicalisation and extremism; threats against, for example, politic", - "aiSummary": "PST (Norway) English reporting page has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "What types of issues does PST deal with? PST works to prevent and respond to incidents that could represent a threat to national security. We have particular responsibility for terrorism, e.g. radicalisation and extremism; threats against, for example, politicians and other dignitaries; espionage, e.g. the recruitment of agents or cyber-attacks; sabotage, e.g. attacks on dams or IT systems, and the proliferation of w", + "summary": "The current national threat level is SUBSTANTIAL. The threat to Northern Ireland from Northern Ireland-related terrorism is SUBSTANTIAL.", + "aiSummary": "MI5 (Security Service) a UK Threat Level has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "The current national threat level is SUBSTANTIAL. The threat to Northern Ireland from Northern Ireland-related terrorism is SUBSTANTIAL.", "peopleInvolved": [], - "source": "PST (Norway) English reporting page", - "sourceUrl": "http://www-prod.pst.no/om-pst/", + "source": "MI5 (Security Service) a UK Threat Level", + "sourceUrl": "https://www.mi5.gov.uk/threats-and-advice/threat-levels", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", "laneReason": "Prevention, radicalisation, or analytical context source.", "queueReason": "Prevention, radicalisation, or analytical context source.", "time": "Source date unconfirmed", - "lat": 54, - "lng": 15, + "lat": 54.7877, + "lng": -6.4923, "major": false, "publishedAt": null, "keywordHits": [ "terrorism", - "attacks", "threat" ], "terrorismHits": [ - "terrorism", - "extremism", - "radicalisation" + "terrorism" ], "eventType": "prevention_update", - "geoPrecision": "country", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 3.4, + "priorityScore": 2.8, "freshnessBucket": 1, "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-58743b394d28e45f", - "source": "PST (Norway) English reporting page", - "sourceUrl": "http://www-prod.pst.no/om-pst/", + "fusedIncidentId": "fusion-ca887123e34a6fd9", + "source": "MI5 (Security Service) a UK Threat Level", + "sourceUrl": "https://www.mi5.gov.uk/threats-and-advice/threat-levels", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, @@ -7957,60 +7590,60 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-58743b394d28e45f" + "isDuplicateOf": "fusion-ca887123e34a6fd9" }, { - "id": "gov-uk-terrorism-national-emergency-0", - "fusedIncidentId": "fusion-ab45d0eca7a23669", - "title": "On The MI5 Website", - "location": "Northern Ireland, UK", - "region": "uk", - "lane": "prevention", + "id": "europol-news-rss-1", + "fusedIncidentId": "fusion-54de5f35957e93e0", + "title": "From Intelligence To Conviction: Europol Helps Dismantle Terrorgram Collective", + "location": "Canada", + "region": "eu", + "lane": "context", "severity": "moderate", "status": "Update", - "actor": "GOV.UK - Terrorism National Emergency", - "subject": "GOV.UK - Terrorism National Emergency", + "actor": "Europol a Newsroom (RSS)", + "subject": "Europol a Newsroom (RSS)", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "The threat level indicates the likelihood of a terrorist attack in the UK. National threat level The threat to the UK (England, Wales, Scotland and Northern Ireland) from terrorism is substantial. Northern Ireland-related threat level The threat to Northern Ir", - "aiSummary": "GOV.UK - Terrorism National Emergency has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "The threat level indicates the likelihood of a terrorist attack in the UK. National threat level The threat to the UK (England, Wales, Scotland and Northern Ireland) from terrorism is substantial. Northern Ireland-related threat level The threat to Northern Ireland from Northern Ireland-related terrorism is substantial. Threat levels There are 5 levels of threat: low - an attack is highly unlikely moderate - an attac", + "summary": "A Canadian man has been sentenced by the Public Prosecution Service of Canada to 20 years in prison for terrorism-related offences, following an investigation supported by Europol’s European Counter Terrorism Centre (ECTC).The individual, based in Ontario’s Ni", + "aiSummary": "Europol a Newsroom (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "A Canadian man has been sentenced by the Public Prosecution Service of Canada to 20 years in prison for terrorism-related offences, following an investigation supported by Europol’s European Counter Terrorism Centre (ECTC).The individual, based in Ontario’s Niagara region, pleaded guilty to producing and disseminating violent white supremacist propaganda as part of the online extremist network known as the “Terrorgram Collective”....", "peopleInvolved": [], - "source": "GOV.UK - Terrorism National Emergency", - "sourceUrl": "https://www.mi5.gov.uk/threat-levels", + "source": "Europol a Newsroom (RSS)", + "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/intelligence-to-conviction-europol-helps-dismantle-terrorgram-collective", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "time": "Source date unconfirmed", - "lat": 54.7877, - "lng": -6.4923, + "lat": 56.1304, + "lng": -106.3468, "major": false, "publishedAt": null, "keywordHits": [ "terrorism", - "attack", - "threat" + "extremist" ], "terrorismHits": [ "terrorism", - "terrorist" + "counter terrorism", + "extremist" ], - "eventType": "prevention_update", + "eventType": "context_update", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 3.4, + "priorityScore": 2.8, "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "freshUntil": "2026-04-10T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-ab45d0eca7a23669", - "source": "GOV.UK - Terrorism National Emergency", - "sourceUrl": "https://www.mi5.gov.uk/threat-levels", + "fusedIncidentId": "fusion-54de5f35957e93e0", + "source": "Europol a Newsroom (RSS)", + "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/intelligence-to-conviction-europol-helps-dismantle-terrorgram-collective", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, @@ -8018,60 +7651,56 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-ab45d0eca7a23669" + "isDuplicateOf": "fusion-54de5f35957e93e0" }, { - "id": "gov-uk-terrorism-national-emergency-2", - "fusedIncidentId": "fusion-8dee7cd7618b5f1e", - "title": "Home", - "location": "Northern Ireland, UK", - "region": "uk", - "lane": "prevention", + "id": "europol-news-rss-2", + "fusedIncidentId": "fusion-fdfc382e39e41049", + "title": "Guns-For-Cannabis Network Hit: Europol High-Value Target Arrested In International Action", + "location": "Greece", + "region": "eu", + "lane": "context", "severity": "moderate", "status": "Update", - "actor": "GOV.UK - Terrorism National Emergency", - "subject": "GOV.UK - Terrorism National Emergency", + "actor": "Europol a Newsroom (RSS)", + "subject": "Europol a Newsroom (RSS)", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "Printable version The threat level indicates the likelihood of a terrorist attack in the UK. The threat to the UK (England, Wales, Scotland and Northern Ireland) from terrorism is substantial. The threat to Northern Ireland from Northern Ireland-related terror", - "aiSummary": "GOV.UK - Terrorism National Emergency has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "Printable version The threat level indicates the likelihood of a terrorist attack in the UK. The threat to the UK (England, Wales, Scotland and Northern Ireland) from terrorism is substantial. The threat to Northern Ireland from Northern Ireland-related terrorism is substantial. There are 5 levels of threat: The level is set by the Joint Terrorism Analysis Centre and the Security Service (MI5). Threat levels do not have an expiry date. They can change at any time as different information becomes available. Get more information about terrorism threat levels in the UK on the MI5 website. You can also check the government’s travel advice for different countries. The Security Service (MI5) is responsible for protecting the UK against threats to national security. The Office for Security and Counter-Terrorism coordinates the government’s response in case of a terrorist incident. Counter-terrorism laws are enforced by the police.", + "summary": "The main suspect, a Turkish national holding a Greek residence permit, is believed to have coordinated the sourcing and transport of firearms into Spain, while overseeing the purchase and onward distribution of drugs to countries including Greece and Bulgaria.", + "aiSummary": "Europol a Newsroom (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "The main suspect, a Turkish national holding a Greek residence permit, is believed to have coordinated the sourcing and transport of firearms into Spain, while overseeing the purchase and onward distribution of drugs to countries including Greece and Bulgaria.Flow of illicit firearms into the EUThe investigation began in March 2025, when the Spanish Mossos d’Esquadra detected the illegal introduction of...", "peopleInvolved": [], - "source": "GOV.UK - Terrorism National Emergency", - "sourceUrl": "https://www.gov.uk/terrorism-national-emergency/print", + "source": "Europol a Newsroom (RSS)", + "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/guns-for-cannabis-network-hit-europol-high-value-target-arrested-in-international-action", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "time": "Source date unconfirmed", - "lat": 54.7877, - "lng": -6.4923, + "lat": 39.0742, + "lng": 21.8243, "major": false, "publishedAt": null, "keywordHits": [ - "terrorism", - "attack", - "threat" - ], - "terrorismHits": [ - "terrorism", - "terrorist" + "suspect", + "arrested" ], - "eventType": "prevention_update", + "terrorismHits": [], + "eventType": "context_update", "geoPrecision": "region", "isOfficial": true, - "priorityScore": 3.4, + "priorityScore": 2.8, "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "freshUntil": "2026-04-10T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-8dee7cd7618b5f1e", - "source": "GOV.UK - Terrorism National Emergency", - "sourceUrl": "https://www.gov.uk/terrorism-national-emergency/print", + "fusedIncidentId": "fusion-fdfc382e39e41049", + "source": "Europol a Newsroom (RSS)", + "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/guns-for-cannabis-network-hit-europol-high-value-target-arrested-in-international-action", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, @@ -8079,154 +7708,197 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-8dee7cd7618b5f1e" + "isDuplicateOf": "fusion-fdfc382e39e41049" }, { - "id": "gov-uk-proscribed-terrorist-orgs-0", - "fusedIncidentId": "fusion-3a4bc58bbd6da4d2", - "title": "Home", - "location": "United Kingdom", - "region": "uk", - "lane": "sanctions", - "severity": "elevated", + "id": "ocam-be-english-0", + "fusedIncidentId": "fusion-38385fd51e74a23e", + "title": "What Do We Do? - CUTA", + "location": "Belgium", + "region": "europe", + "lane": "prevention", + "severity": "moderate", "status": "Update", - "actor": "GOV.UK a Proscribed Terrorist Organisations", - "subject": "GOV.UK a Proscribed Terrorist Organisations", + "actor": "CUTA (Belgium) threat analysis", + "subject": "CUTA (Belgium) threat analysis", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "Government services may set additional cookies and, if so, will have their own cookie policy and banner. Cookies are files saved on your phone, tablet or computer when you visit a website. We use cookies to collect and store information about how you use the G", - "aiSummary": "GOV.UK a Proscribed Terrorist Organisations has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", - "sourceExtract": "Government services may set additional cookies and, if so, will have their own cookie policy and banner. Cookies are files saved on your phone, tablet or computer when you visit a website. We use cookies to collect and store information about how you use the GOV.UK website and government digital services, such as the pages you visit. 'Government digital services' means any page with service.gov.uk in the URL. This page has a brief explanation of each type of cookie we use. If you want more details, read our detailed cookie information. We use Javascript to set most of our cookies. Unfortunately Javascript is not running on your browser, so you cannot change your settings on this page. You can try: You can also remove any previously stored cookies through your browser. Look for 'Preferences', 'Settings', or 'Options' in your browser menu. We use 4 types of cookie. You can choose which cookies you're happy for us to use. We use Google Analytics cookies to measure how you use GOV.UK and government digital services. These cookies collect information about: We also use LUX Real User Monitoring software cookies from Speed. Curve to measure your web performance experience while visiting GOV.UK. LUX software cookies collect and store information about how well pages performed on your device, including whether there were any performance bottlenecks or Java. Script errors. We do not allow Google or Speed. Curve to use or share this data for their own purposes.", + "summary": "Our democratic rule of law defends itself against terrorism and extremism. Threats are continuously identified by the security services and monitored as a matter of priority. The Common Database Terrorism, Extremism, Radicalisation Process (CDB T.E.R.) contain", + "aiSummary": "CUTA (Belgium) threat analysis has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "Our democratic rule of law defends itself against terrorism and extremism. Threats are continuously identified by the security services and monitored as a matter of priority. The Common Database Terrorism, Extremism, Radicalisation Process (CDB T.E.R.) contains the names of the persons who are monitored with priority in our country with regard to extremism and terrorism. It is the tool to ceaselessly share relevant information between the partner services. Extremism manifests itself in various ways. We identify five categories of extremists with strong links to Belgium. Read more about how the Common Database T.E.R. operates. The Strategy T.E.R. (Terrorism, Extremism, Radicalisation Process) replaces the Action Plan against Radicalism, the Belgian multidisciplinary action plan against extremism and radicalization processes in Belgium. The Strategy builds on past experiences and lessons learned. The federal level, the Communities and the Regions and all services involved in the multidisciplinary approach that have been working together for years on tackling extremism have now also officially endorsed the Strategy. The Strategy thus gives all partners greater scope to tackle all forms of extremism and terrorism, whether religious, ideological, or otherwise inspired, in an equal manner, using a common framework and a common strategy. Mutual trust and cooperation under the coordination of CUTA remain essential. Read more about how the Strategy T.E.R. operates with its various partners. Based on the information and intelligence of its partners, CUTA draws up punctual as well as strategic threat assessments. The punctual assessments specifically determine the level of a threat. These are drawn up for specific events such as Christmas markets, festivals and EU summits. Punctua", "peopleInvolved": [], - "source": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/help/cookies", + "source": "CUTA (Belgium) threat analysis", + "sourceUrl": "https://ocad.belgium.be/en/what-do-we-do/#the-common-database", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", "time": "Source date unconfirmed", - "lat": 54.5, - "lng": -2.5, + "lat": 50.5039, + "lng": 4.4699, "major": false, "publishedAt": null, "keywordHits": [ - "device" + "terrorism", + "threat" ], - "terrorismHits": [], - "eventType": "sanctions_update", - "geoPrecision": "country", + "terrorismHits": [ + "terrorism", + "extremism", + "radicalisation", + "radicalization" + ], + "eventType": "prevention_update", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 3.2, + "priorityScore": 2.8, "freshnessBucket": 1, - "freshUntil": "2026-04-16T05:26:53.285Z", + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-3a4bc58bbd6da4d2", - "source": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/help/cookies", + "fusedIncidentId": "fusion-38385fd51e74a23e", + "source": "CUTA (Belgium) threat analysis", + "sourceUrl": "https://ocad.belgium.be/en/what-do-we-do/#punctual-and-strategic-assessments", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-3a4bc58bbd6da4d2" - }, - { - "id": "eu-council-terrorism-sanctions-0", - "fusedIncidentId": "fusion-8696f3a10b432c52", - "title": "The EU'S Response To Terrorism", - "location": "Europe", - "region": "eu", - "lane": "sanctions", - "severity": "elevated", + }, + { + "fusedIncidentId": "fusion-38385fd51e74a23e", + "source": "CUTA (Belgium) threat analysis", + "sourceUrl": "https://ocad.belgium.be/en/what-do-we-do/#administrative-measures", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, + "confidence": "Verified official source update" + }, + { + "fusedIncidentId": "fusion-38385fd51e74a23e", + "source": "CUTA (Belgium) threat analysis", + "sourceUrl": "https://ocad.belgium.be/en/what-do-we-do/#international-exchange-of-information", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, + "confidence": "Verified official source update" + }, + { + "fusedIncidentId": "fusion-38385fd51e74a23e", + "source": "CUTA (Belgium) threat analysis", + "sourceUrl": "https://ocad.belgium.be/en/what-do-we-do/#the-common-database", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, + "confidence": "Verified official source update" + } + ], + "corroborationCount": 4, + "isDuplicateOf": "fusion-38385fd51e74a23e" + }, + { + "id": "protectuk-2", + "fusedIncidentId": "fusion-2c2a17e25f3076d3", + "title": "ACT In A BOX Exercises | ProtectUK", + "location": "United Kingdom", + "region": "uk", + "lane": "prevention", + "severity": "moderate", "status": "Update", - "actor": "Council of the EU - Sanctions Against Terrorism", - "subject": "Council of the EU - Sanctions Against Terrorism", + "actor": "ProtectUK (NPSA) a Protective Security Guidance", + "subject": "ProtectUK (NPSA) a Protective Security Guidance", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "The EU's response to terrorism The EU's response to terrorism", - "aiSummary": "Council of the EU - Sanctions Against Terrorism has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", - "sourceExtract": "The EU's response to terrorism The EU's response to terrorism", + "summary": "ACT in a BOX is an interactive exercising experience which enables businesses to rehearse and explore their response to fictional terrorist incidents at or near their premises. The immersive digital tool enables businesses to rehearse and explore their respons", + "aiSummary": "ProtectUK (NPSA) a Protective Security Guidance has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "ACT in a BOX is an interactive exercising experience which enables businesses to rehearse and explore their response to fictional terrorist incidents at or near their premises. The immersive digital tool enables businesses to rehearse and explore their response to a fictional terrorist incident at or near their premises. The fully interactive experience puts you, your staff and colleagues at the heart of a scenario by allowing you to influence the content and decide what to do next. Throughout each exercise, participants will also collectively reflect on their own workplace arrangements and physically complete activities, recording key considerations within the experience. You will have the opportunity to download a bespoke summary document at the end. All scenarios are designed to be completed in a group format with a nominated facilitator to run the experience on a digital device and guide discussions. Further information can be found in the comprehensive Facilitation Guide, downloadable at the start of each scenario. To complete the scenario, click the relevant link below. Please note that you will be diverted from the ProtectUK platform in order to complete the experience. (Please click on the above to access the FAQs) Improvised Explosive Device (IED) Scenario An interactive, visual Improvised Explosive Device (IED) scenario for businesses of all sizes. Complete this exercise as a group in just over 90 minutes to explore your response to an unattended or suspicious item. Please click here to access this scenario.", "peopleInvolved": [], - "source": "Council of the EU - Sanctions Against Terrorism", - "sourceUrl": "https://www.consilium.europa.eu/en/policies/fight-against-terrorism/", + "source": "ProtectUK (NPSA) a Protective Security Guidance", + "sourceUrl": "https://www.protectuk.police.uk/resources/741", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", "time": "Source date unconfirmed", - "lat": 54, - "lng": 15, + "lat": 54.5, + "lng": -2.5, "major": false, "publishedAt": null, "keywordHits": [ - "terrorism" + "explosive", + "device" ], "terrorismHits": [ - "terrorism" + "terrorist" ], - "eventType": "sanctions_update", + "eventType": "prevention_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 3.2, + "priorityScore": 2.8, "freshnessBucket": 1, - "freshUntil": "2026-04-15T20:35:56.070Z", + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-2c2a17e25f3076d3", + "source": "ProtectUK (NPSA) a Protective Security Guidance", + "sourceUrl": "https://www.protectuk.police.uk/resources/741", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, + "confidence": "Verified official source update" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-2c2a17e25f3076d3" }, { - "id": "eu-council-terrorism-sanctions-3", - "fusedIncidentId": "fusion-ccfbf88bc86cca84", - "title": "Decision - EU - 2026/455 - EN - EUR-Lex", - "location": "Europe", + "id": "eurojust-press-news-html-2", + "fusedIncidentId": "fusion-44be55f078401d1a", + "title": "Global Actions Hit Cocaine Traffickers In Brazil", + "location": "France", "region": "eu", - "lane": "sanctions", - "severity": "elevated", + "lane": "context", + "severity": "moderate", "status": "Update", - "actor": "Council of the EU - Sanctions Against Terrorism", - "subject": "Council of the EU - Sanctions Against Terrorism", + "actor": "Eurojust - Press Releases and News", + "subject": "Eurojust - Press Releases and News", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "Decision on restrictive measures to combat terrorism (EU Official Journal)", - "aiSummary": "Council of the EU - Sanctions Against Terrorism has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", - "sourceExtract": "Decision on restrictive measures to combat terrorism (EU Official Journal)", + "summary": "The first ever joint investigation team (JIT) between French and Brazilian authorities, supported and funded by Eurojust, has dealt a significant blow to an international drug trafficking network. Following the discovery of 124 kg of cocaine on a cargo ship ar", + "aiSummary": "Eurojust - Press Releases and News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "The first ever joint investigation team (JIT) between French and Brazilian authorities, supported and funded by Eurojust, has dealt a significant blow to an international drug trafficking network. Following the discovery of 124 kg of cocaine on a cargo ship arriving at a port in France from Brazil, authorities from both countries worked together through a JIT to arrest key members of the network. Cooperation through the Eurojust-funded JIT led to the identification of the international criminal network behind the shipment of cocaine. The JIT framework enabled the authorities to exchange information and evidence in real time and carry out joint operations. On 10 March, the authorities took action against the criminal network operating in the port of Santos in Brazil. Two suspects were arrested and eight searches were carried out in Santos and Valinhos, resulting in the seizure of vehicles, weapons and watches. One of the suspects has been heard as a witness. Eurojust also supported earlier actions targeting the network’s members in Portugal. During these actions, three suspected importers were arrested. They have since then been surrendered to France. The drugs seized at the port of La Pallice in La Rochelle, France, are suspected to be linked to other shipments of narcotics from Brazil to Europe via international shipping routes. The suspected members of the group were responsible for the logistics of the shipments, ranging from the loading of narcotics onto ships to laundering the illicit profits from their trafficking operation. As criminal networks continue to operate on a global scale, cooperation among authorities worldwide is essential. Eurojust is scaling up its cooperation with judicial authorities outside the European Union. The Agency’s unique position in conn", "peopleInvolved": [], - "source": "Council of the EU - Sanctions Against Terrorism", - "sourceUrl": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=OJ:L_202600455", + "source": "Eurojust - Press Releases and News", + "sourceUrl": "https://www.eurojust.europa.eu/news/global-actions-hit-cocaine-traffickers-brazil", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "time": "Source date unconfirmed", - "lat": 54, - "lng": 15, + "lat": 46.6034, + "lng": 1.8883, "major": false, "publishedAt": null, "keywordHits": [ - "terrorism" - ], - "terrorismHits": [ - "terrorism" + "arrest", + "arrested" ], - "eventType": "sanctions_update", - "geoPrecision": "country", + "terrorismHits": [], + "eventType": "context_update", + "geoPrecision": "region", "isOfficial": true, - "priorityScore": 3.2, + "priorityScore": 2.8, "freshnessBucket": 1, - "freshUntil": "2026-04-15T20:35:56.070Z", + "freshUntil": "2026-04-10T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [], @@ -8234,54 +7906,46 @@ "isDuplicateOf": null }, { - "id": "icct-perspectives-on-terrorism-1", - "fusedIncidentId": "fusion-fccda56bb2abdae0", - "title": "Lexical Patterns In (Non-)Violent Extremist Content Online: A Linguistic Comparison Of Jihadist And Salafist Discourse | Perspectives On Terrorism", - "location": "Europe", - "region": "europe", + "id": "eurojust-press-news-html-3", + "fusedIncidentId": "fusion-f3e584c9daf0e5db", + "title": "Financial Crime Investigation Culminates In Arrests And Frozen Assets Of High Value", + "location": "The Hague, Netherlands", + "region": "eu", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "Perspectives on Terrorism (ICCT) a Journal", - "subject": "Perspectives on Terrorism (ICCT) a Journal", + "actor": "Eurojust - Press Releases and News", + "subject": "Eurojust - Press Releases and News", "happenedWhen": "Source date unconfirmed", - "confidence": "Research or analytical source", - "confidenceScore": 0.64, - "summary": "In an age of rapid social and technological change, digital trace analysis is crucial for law enforcement and intelligence agencies. The massive volume, variety, and velocity of digital data pose a significant challenge in identifying relevant and unsuitable c", - "aiSummary": "Perspectives on Terrorism (ICCT) a Journal has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "In an age of rapid social and technological change, digital trace analysis is crucial for law enforcement and intelligence agencies. The massive volume, variety, and velocity of digital data pose a significant challenge in identifying relevant and unsuitable content. This study addresses these challenges by employing a lexicon-based classification to distinguish violent jihadist discourses from non-violent Salafist discourses. Using open-source transcriptions of jihadist and Salafist videos originally produced, translated or subtitled in English, the study identifies linguistic themes through the LIWC Grievance dictionary. Key findings indicate that Impostor, Soldier, and Weaponry themes are statistically discriminant for all violent jihadist discourses. Furthermore, group-specific markers emerged, such as Deadline for al-Qaeda, and Suicide, Surveillance, and Violence for the Islamic State. While these tools offer significant potential for large-scale data processing, the study emphasises the necessity of qualitative contextual analysis to mitigate algorithmic biases and false positives. Photo credit: federico stevanin/Shutterstock.com", + "confidence": "Verified official source update", + "confidenceScore": 0.76, + "summary": "Two individuals suspected of committing serious economic and financial crimes resulting in losses amounting to tens of millions of euros have been arrested during an international operation coordinated from Eurojust. Over 400 investigators worked together acro", + "aiSummary": "Eurojust - Press Releases and News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "Two individuals suspected of committing serious economic and financial crimes resulting in losses amounting to tens of millions of euros have been arrested during an international operation coordinated from Eurojust. Over 400 investigators worked together across six countries to search 49 properties and gather essential evidence to continue the investigations. The individuals are under investigation for allegations of bankruptcy fraud, embezzlement and the breach of accounting obligations. The main suspect, a real estate developer in the Düsseldorf area, et al., allegedly moved large amounts of his private assets to other individuals’ accounts before filing for insolvency proceedings. By hiding these assets, he was able to defraud millions of euros. On 26 March, a coordinated operation took place across six countries. With coordination from the Eurojust headquarters, over 49 properties were searched in Germany, Austria, Luxembourg, the Netherlands, Spain and Switzerland. During the operation that was executed on behalf of the German authorities, the main suspect, as well as a suspected accomplice, were arrested in Spain and Germany respectively. The searches resulted in the seizure of large quantities of evidence, including mobile phones, computer equipment, business records and other documents. Authorities were also able to seize assets worth millions of euros, including cash, artworks, watches, handbags and a luxury sports car. Given that evidence and assets were scattered across Europe, authorities needed to work together to take action against the large-scale economic and financial crimes committed by the suspects. Multiple coordination meetings were organised at Eurojust making it possible for authorities to exchange information and plan the coordinated operation. ", "peopleInvolved": [], - "source": "Perspectives on Terrorism (ICCT) a Journal", - "sourceUrl": "https://pt.icct.nl/article/lexical-patterns-non-violent-extremist-content-online-linguistic-comparison-jihadist-and", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "source": "Eurojust - Press Releases and News", + "sourceUrl": "https://www.eurojust.europa.eu/news/financial-crime-investigation-culminates-arrests-and-frozen-assets-high-value", + "sourceTier": "context", + "reliabilityProfile": "official_context", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "time": "Source date unconfirmed", - "lat": 54, - "lng": 15, + "lat": 52.0705, + "lng": 4.3007, "major": false, "publishedAt": null, "keywordHits": [ - "terrorism", - "extremist", - "islamic state", - "al-qaeda" - ], - "terrorismHits": [ - "terrorism", - "extremist", - "jihadist", - "islamic state", - "al-qaeda" + "suspect", + "arrested" ], + "terrorismHits": [], "eventType": "context_update", - "geoPrecision": "country", - "isOfficial": false, - "priorityScore": 3.1, + "geoPrecision": "region", + "isOfficial": true, + "priorityScore": 2.8, "freshnessBucket": 1, - "freshUntil": "2026-04-09T21:34:40.140Z", + "freshUntil": "2026-04-10T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [], @@ -8289,376 +7953,311 @@ "isDuplicateOf": null }, { - "id": "uk-ncsc-news-2", - "fusedIncidentId": "fusion-7231c61429475334", - "title": "Cyber Chief: UK Faces \"Perfect Storm\" For Cyber Security", + "id": "independent-reviewer-terrorism-legislation-2", + "fusedIncidentId": "fusion-88b4648c71de081d", + "title": "19.5.25 State Threat And Terrorism Report", "location": "United Kingdom", "region": "uk", "lane": "oversight", "severity": "moderate", "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "21 Apr 2026, 13:00", + "actor": "Independent Reviewer of Terrorism Legislation a Reports", + "subject": "Independent Reviewer of Terrorism Legislation a Reports", + "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "As the technology landscape develops, the definition of cyber security is expanding with it.", - "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "As the technology landscape develops, the definition of cyber security is expanding with it.", + "confidenceScore": 0.76, + "summary": "19.5.25 State Threat and Terrorism report", + "aiSummary": "Independent Reviewer of Terrorism Legislation a Reports has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", + "sourceExtract": "19.5.25 State Threat and Terrorism report", "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/cyber-chief-uk-faces-perfect-storm-for-cyber-security", + "source": "Independent Reviewer of Terrorism Legislation a Reports", + "sourceUrl": "https://terrorismlegislationreviewer.independent.gov.uk/wp-content/uploads/2025/05/19.5.25-State-Threat-and-Terrorism-report-1.pdf", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "21 Apr 2026, 13:00", + "time": "Source date unconfirmed", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-04-21T12:00:00.000Z", - "keywordHits": [], - "terrorismHits": [], + "publishedAt": null, + "keywordHits": [ + "terrorism", + "threat" + ], + "terrorismHits": [ + "terrorism" + ], "eventType": "oversight_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.95, + "priorityScore": 2.8, "freshnessBucket": 1, - "freshUntil": "2026-04-29T12:00:00.000Z", + "freshUntil": "2026-04-13T23:36:29.665Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-7231c61429475334", - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/cyber-chief-uk-faces-perfect-storm-for-cyber-security", + "fusedIncidentId": "fusion-88b4648c71de081d", + "source": "Independent Reviewer of Terrorism Legislation a Reports", + "sourceUrl": "https://terrorismlegislationreviewer.independent.gov.uk/wp-content/uploads/2025/05/19.5.25-State-Threat-and-Terrorism-report-1.pdf", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-04-21T12:00:00.000Z", + "publishedAt": null, "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-7231c61429475334" + "isDuplicateOf": "fusion-88b4648c71de081d" }, { - "id": "mi5-uk-threat-level-0", - "fusedIncidentId": "fusion-ca887123e34a6fd9", - "title": "Current Threat Level: SUBSTANTIAL", - "location": "Northern Ireland, UK", - "region": "uk", - "lane": "prevention", + "id": "eu-olaf-news-1", + "fusedIncidentId": "fusion-b7d3f8ceab069d7b", + "title": "HOME", + "location": "Europe", + "region": "eu", + "lane": "oversight", "severity": "moderate", "status": "Update", - "actor": "MI5 (Security Service) a UK Threat Level", - "subject": "MI5 (Security Service) a UK Threat Level", + "actor": "OLAF (EU Anti-Fraud Office) a News", + "subject": "OLAF (EU Anti-Fraud Office) a News", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "The current national threat level is SUBSTANTIAL. The threat to Northern Ireland from Northern Ireland-related terrorism is SUBSTANTIAL.", - "aiSummary": "MI5 (Security Service) a UK Threat Level has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "The current national threat level is SUBSTANTIAL. The threat to Northern Ireland from Northern Ireland-related terrorism is SUBSTANTIAL.", + "summary": "Press release no 4/2026PDF version The European Anti-Fraud Office (OLAF) has supported Albanian authorities in uncovering and stopping the illegal export of hazardous industrial waste from the port of Durrës, Albania to Thailand, highlighting the growing globa", + "aiSummary": "OLAF (EU Anti-Fraud Office) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", + "sourceExtract": "Press release no 4/2026PDF version The European Anti-Fraud Office (OLAF) has supported Albanian authorities in uncovering and stopping the illegal export of hazardous industrial waste from the port of Durrës, Albania to Thailand, highlighting the growing global threat posed by illegal waste trafficking. The investigation began in 2024 when OLAF alerted the Albanian customs authorities to a shipment suspected of containing large quantities of misdeclared hazardous waste. Export documents described the cargo as iron oxide. However, subsequent laboratory analysis later established that the cargo, in fact contained a toxic by-product of steel production. While iron oxide is widely used in legitimate industrial applications – such as construction materials and metallurgy – and is generally considered non-hazardous when properly handled, certain steelmaking residues are classified as hazardous materials as they often contain elevated concentrations of heavy metals. If improperly managed or disposed of, they pose serious risks to health and the environment, including soil and groundwater contamination and long-term toxic exposure for nearby communities. This was the case with the shipment identified. Working closely with the Albanian Customs Investigation Directorate, OLAF helped coordinate operational actions that prevented the hazardous waste from being disposed of unlawfully abroad. OLAF further supported the investigation by organising and participating in several operational meetings with the Albanian Customs Investigation Directorate and the Durrës Prosecution Office, facilitating exchanges that proved key to advancing the case. The cooperation led to the interception of the shipment and its ultimate return to its country of origin. It also supported national proceedings", "peopleInvolved": [], - "source": "MI5 (Security Service) a UK Threat Level", - "sourceUrl": "https://www.mi5.gov.uk/threats-and-advice/threat-levels", + "source": "OLAF (EU Anti-Fraud Office) a News", + "sourceUrl": "https://anti-fraud.ec.europa.eu/media-corner/news/olaf-helps-stop-illegal-export-hazardous-industrial-waste-albania-2026-02-13_en", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", + "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", "time": "Source date unconfirmed", - "lat": 54.7877, - "lng": -6.4923, + "lat": 54, + "lng": 15, "major": false, "publishedAt": null, "keywordHits": [ - "terrorism", + "arrest", "threat" ], - "terrorismHits": [ - "terrorism" - ], - "eventType": "prevention_update", - "geoPrecision": "region", + "terrorismHits": [], + "eventType": "oversight_update", + "geoPrecision": "country", "isOfficial": true, "priorityScore": 2.8, "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "freshUntil": "2026-04-13T15:35:04.347Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-ca887123e34a6fd9", - "source": "MI5 (Security Service) a UK Threat Level", - "sourceUrl": "https://www.mi5.gov.uk/threats-and-advice/threat-levels", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-ca887123e34a6fd9" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "europol-news-rss-1", - "fusedIncidentId": "fusion-54de5f35957e93e0", - "title": "From Intelligence To Conviction: Europol Helps Dismantle Terrorgram Collective", - "location": "Canada", - "region": "eu", + "id": "state-dept-terrorism-0", + "fusedIncidentId": "fusion-207765839fceae71", + "title": "The Global Coalition To Defeat ISIS - United States Department Of State", + "location": "United States", + "region": "us", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "Europol a Newsroom (RSS)", - "subject": "Europol a Newsroom (RSS)", + "actor": "US State Department a Bureau of Counterterrorism", + "subject": "US State Department a Bureau of Counterterrorism", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "A Canadian man has been sentenced by the Public Prosecution Service of Canada to 20 years in prison for terrorism-related offences, following an investigation supported by Europol’s European Counter Terrorism Centre (ECTC).The individual, based in Ontario’s Ni", - "aiSummary": "Europol a Newsroom (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "A Canadian man has been sentenced by the Public Prosecution Service of Canada to 20 years in prison for terrorism-related offences, following an investigation supported by Europol’s European Counter Terrorism Centre (ECTC).The individual, based in Ontario’s Niagara region, pleaded guilty to producing and disseminating violent white supremacist propaganda as part of the online extremist network known as the “Terrorgram Collective”....", + "summary": "On September 10, 2014, the U.S. announced the formation of a broad international coalition to defeat the Islamic State of Iraq and Syria (ISIS).", + "aiSummary": "US State Department a Bureau of Counterterrorism has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "On September 10, 2014, the U.S. announced the formation of a broad international coalition to defeat the Islamic State of Iraq and Syria (ISIS).", "peopleInvolved": [], - "source": "Europol a Newsroom (RSS)", - "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/intelligence-to-conviction-europol-helps-dismantle-terrorgram-collective", + "source": "US State Department a Bureau of Counterterrorism", + "sourceUrl": "https://www.state.gov/bureaus-offices/under-secretary-for-political-affairs/bureau-of-counterterrorism/the-global-coalition-to-defeat-isis/", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "time": "Source date unconfirmed", - "lat": 56.1304, - "lng": -106.3468, + "lat": 39.8283, + "lng": -98.5795, "major": false, "publishedAt": null, "keywordHits": [ - "terrorism", - "extremist" + "isis", + "islamic state" ], "terrorismHits": [ - "terrorism", - "counter terrorism", - "extremist" + "isis", + "islamic state" ], "eventType": "context_update", "geoPrecision": "region", "isOfficial": true, "priorityScore": 2.8, "freshnessBucket": 1, - "freshUntil": "2026-04-10T09:11:31.394Z", + "freshUntil": "2026-04-09T14:36:11.004Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-54de5f35957e93e0", - "source": "Europol a Newsroom (RSS)", - "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/intelligence-to-conviction-europol-helps-dismantle-terrorgram-collective", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-54de5f35957e93e0" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "europol-news-rss-2", - "fusedIncidentId": "fusion-fdfc382e39e41049", - "title": "Guns-For-Cannabis Network Hit: Europol High-Value Target Arrested In International Action", - "location": "Greece", - "region": "eu", + "id": "state-dept-terrorism-1", + "fusedIncidentId": "fusion-98b0411f92aa4ffa", + "title": "Country Reports On Terrorism - United States Department Of State", + "location": "United States", + "region": "us", "lane": "context", "severity": "moderate", "status": "Update", - "actor": "Europol a Newsroom (RSS)", - "subject": "Europol a Newsroom (RSS)", + "actor": "US State Department a Bureau of Counterterrorism", + "subject": "US State Department a Bureau of Counterterrorism", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "The main suspect, a Turkish national holding a Greek residence permit, is believed to have coordinated the sourcing and transport of firearms into Spain, while overseeing the purchase and onward distribution of drugs to countries including Greece and Bulgaria.", - "aiSummary": "Europol a Newsroom (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "The main suspect, a Turkish national holding a Greek residence permit, is believed to have coordinated the sourcing and transport of firearms into Spain, while overseeing the purchase and onward distribution of drugs to countries including Greece and Bulgaria.Flow of illicit firearms into the EUThe investigation began in March 2025, when the Spanish Mossos d’Esquadra detected the illegal introduction of...", + "summary": "Bureau of Counterterrorism U.S. law requires the Secretary of State to provide Congress, by April 30 of each year, a full and complete report on terrorism with regard to those countries and groups meeting criteria set forth in the legislation. This annual repo", + "aiSummary": "US State Department a Bureau of Counterterrorism has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "Bureau of Counterterrorism U.S. law requires the Secretary of State to provide Congress, by April 30 of each year, a full and complete report on terrorism with regard to those countries and groups meeting criteria set forth in the legislation. This annual report is entitled Country Reports on Terrorism. Beginning with the report for 2004, it replaced the previously published Patterns of Global Terrorism. The report covers developments in countries in which acts of terrorism occurred, countries that are state sponsors of terrorism, and countries determined by the Secretary to be of particular interest in the global war on terror. As provided in the legislation, the report reviews major developments in bilateral and multilateral counterterrorism cooperation as well. The report also provides information on terrorist groups responsible for the death, kidnapping, or injury of Americans, any umbrella groups to which they might belong, groups financed by state sponsors of terrorism, reports on all terrorist organizations on the Foreign Terrorist Organization (FTO) list, and other terrorist groups determined by the Secretary to be relevant to the report. Beginning with the report for 2005, Country Reports on Terrorism will also address terrorist sanctuaries and terrorist attempts to acquire weapons of mass destruction. It will also include statistical information provided by the National Counterterrorism Center (NCTC) on the number of individuals killed, injured, or kidnapped by terrorist groups. Tags", "peopleInvolved": [], - "source": "Europol a Newsroom (RSS)", - "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/guns-for-cannabis-network-hit-europol-high-value-target-arrested-in-international-action", + "source": "US State Department a Bureau of Counterterrorism", + "sourceUrl": "https://www.state.gov/country-reports-on-terrorism/", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "time": "Source date unconfirmed", - "lat": 39.0742, - "lng": 21.8243, + "lat": 39.8283, + "lng": -98.5795, "major": false, "publishedAt": null, "keywordHits": [ - "suspect", - "arrested" + "terror", + "terrorism" + ], + "terrorismHits": [ + "terror", + "terrorism", + "terrorist" ], - "terrorismHits": [], "eventType": "context_update", "geoPrecision": "region", "isOfficial": true, "priorityScore": 2.8, "freshnessBucket": 1, - "freshUntil": "2026-04-10T09:11:31.394Z", + "freshUntil": "2026-04-09T14:36:11.004Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-fdfc382e39e41049", - "source": "Europol a Newsroom (RSS)", - "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/guns-for-cannabis-network-hit-europol-high-value-target-arrested-in-international-action", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-fdfc382e39e41049" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "ocam-be-english-0", - "fusedIncidentId": "fusion-38385fd51e74a23e", - "title": "What Do We Do? - CUTA", - "location": "Belgium", - "region": "europe", - "lane": "prevention", - "severity": "moderate", + "id": "gov-uk-proscribed-terrorist-orgs-1", + "fusedIncidentId": "fusion-4c041e3e6cba1329", + "title": "Home", + "location": "United Kingdom", + "region": "uk", + "lane": "sanctions", + "severity": "elevated", "status": "Update", - "actor": "CUTA (Belgium) threat analysis", - "subject": "CUTA (Belgium) threat analysis", + "actor": "GOV.UK a Proscribed Terrorist Organisations", + "subject": "GOV.UK a Proscribed Terrorist Organisations", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "Our democratic rule of law defends itself against terrorism and extremism. Threats are continuously identified by the security services and monitored as a matter of priority. The Common Database Terrorism, Extremism, Radicalisation Process (CDB T.E.R.) contain", - "aiSummary": "CUTA (Belgium) threat analysis has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "Our democratic rule of law defends itself against terrorism and extremism. Threats are continuously identified by the security services and monitored as a matter of priority. The Common Database Terrorism, Extremism, Radicalisation Process (CDB T.E.R.) contains the names of the persons who are monitored with priority in our country with regard to extremism and terrorism. It is the tool to ceaselessly share relevant information between the partner services. Extremism manifests itself in various ways. We identify five categories of extremists with strong links to Belgium. Read more about how the Common Database T.E.R. operates. The Strategy T.E.R. (Terrorism, Extremism, Radicalisation Process) replaces the Action Plan against Radicalism, the Belgian multidisciplinary action plan against extremism and radicalization processes in Belgium. The Strategy builds on past experiences and lessons learned. The federal level, the Communities and the Regions and all services involved in the multidisciplinary approach that have been working together for years on tackling extremism have now also officially endorsed the Strategy. The Strategy thus gives all partners greater scope to tackle all forms of extremism and terrorism, whether religious, ideological, or otherwise inspired, in an equal manner, using a common framework and a common strategy. Mutual trust and cooperation under the coordination of CUTA remain essential. Read more about how the Strategy T.E.R. operates with its various partners. Based on the information and intelligence of its partners, CUTA draws up punctual as well as strategic threat assessments. The punctual assessments specifically determine the level of a threat. These are drawn up for specific events such as Christmas markets, festivals and EU summits. Punctua", + "summary": "Parenting, civil partnerships, divorce and Lasting Power of Attorney Birth certificates, registering a death, marriage, family history and correcting certificates Information about eligibility, claiming and when Child Benefit stops Reporting a death, wills, pr", + "aiSummary": "GOV.UK a Proscribed Terrorist Organisations has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", + "sourceExtract": "Parenting, civil partnerships, divorce and Lasting Power of Attorney Birth certificates, registering a death, marriage, family history and correcting certificates Information about eligibility, claiming and when Child Benefit stops Reporting a death, wills, probate and Inheritance Tax Legal rights, parental rights and child maintenance Includes dealing with benefits, taxes and leaving care Includes getting married abroad, decree absolutes and looking after children", "peopleInvolved": [], - "source": "CUTA (Belgium) threat analysis", - "sourceUrl": "https://ocad.belgium.be/en/what-do-we-do/#the-common-database", + "source": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/browse/births-deaths-marriages", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", + "laneReason": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", "time": "Source date unconfirmed", - "lat": 50.5039, - "lng": 4.4699, + "lat": 54.5, + "lng": -2.5, "major": false, "publishedAt": null, - "keywordHits": [ - "terrorism", - "threat" - ], - "terrorismHits": [ - "terrorism", - "extremism", - "radicalisation", - "radicalization" - ], - "eventType": "prevention_update", - "geoPrecision": "region", + "keywordHits": [], + "terrorismHits": [], + "eventType": "sanctions_update", + "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 2.6, "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "freshUntil": "2026-04-16T05:26:53.285Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-38385fd51e74a23e", - "source": "CUTA (Belgium) threat analysis", - "sourceUrl": "https://ocad.belgium.be/en/what-do-we-do/#punctual-and-strategic-assessments", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" - }, - { - "fusedIncidentId": "fusion-38385fd51e74a23e", - "source": "CUTA (Belgium) threat analysis", - "sourceUrl": "https://ocad.belgium.be/en/what-do-we-do/#administrative-measures", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" - }, - { - "fusedIncidentId": "fusion-38385fd51e74a23e", - "source": "CUTA (Belgium) threat analysis", - "sourceUrl": "https://ocad.belgium.be/en/what-do-we-do/#international-exchange-of-information", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" - }, - { - "fusedIncidentId": "fusion-38385fd51e74a23e", - "source": "CUTA (Belgium) threat analysis", - "sourceUrl": "https://ocad.belgium.be/en/what-do-we-do/#the-common-database", + "fusedIncidentId": "fusion-4c041e3e6cba1329", + "source": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/browse/births-deaths-marriages", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, "confidence": "Verified official source update" } ], - "corroborationCount": 4, - "isDuplicateOf": "fusion-38385fd51e74a23e" + "corroborationCount": 1, + "isDuplicateOf": "fusion-4c041e3e6cba1329" }, { - "id": "protectuk-2", - "fusedIncidentId": "fusion-2c2a17e25f3076d3", - "title": "ACT In A BOX Exercises | ProtectUK", + "id": "gov-uk-proscribed-terrorist-orgs-2", + "fusedIncidentId": "fusion-5ca9109524e5c684", + "title": "Home", "location": "United Kingdom", "region": "uk", - "lane": "prevention", - "severity": "moderate", + "lane": "sanctions", + "severity": "elevated", "status": "Update", - "actor": "ProtectUK (NPSA) a Protective Security Guidance", - "subject": "ProtectUK (NPSA) a Protective Security Guidance", + "actor": "GOV.UK a Proscribed Terrorist Organisations", + "subject": "GOV.UK a Proscribed Terrorist Organisations", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "ACT in a BOX is an interactive exercising experience which enables businesses to rehearse and explore their response to fictional terrorist incidents at or near their premises. The immersive digital tool enables businesses to rehearse and explore their respons", - "aiSummary": "ProtectUK (NPSA) a Protective Security Guidance has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "ACT in a BOX is an interactive exercising experience which enables businesses to rehearse and explore their response to fictional terrorist incidents at or near their premises. The immersive digital tool enables businesses to rehearse and explore their response to a fictional terrorist incident at or near their premises. The fully interactive experience puts you, your staff and colleagues at the heart of a scenario by allowing you to influence the content and decide what to do next. Throughout each exercise, participants will also collectively reflect on their own workplace arrangements and physically complete activities, recording key considerations within the experience. You will have the opportunity to download a bespoke summary document at the end. All scenarios are designed to be completed in a group format with a nominated facilitator to run the experience on a digital device and guide discussions. Further information can be found in the comprehensive Facilitation Guide, downloadable at the start of each scenario. To complete the scenario, click the relevant link below. Please note that you will be diverted from the ProtectUK platform in order to complete the experience. (Please click on the above to access the FAQs) Improvised Explosive Device (IED) Scenario An interactive, visual Improvised Explosive Device (IED) scenario for businesses of all sizes. Complete this exercise as a group in just over 90 minutes to explore your response to an unattended or suspicious item. Please click here to access this scenario.", + "summary": "Tools and guidance for businesses Plan, set up and register a business Includes Corporation Tax, Capital Gains Tax, Construction Industry Scheme (CIS) and VAT Meet legal duties, file reports and manage risk Finance growth, innovate and win work Import goods to", + "aiSummary": "GOV.UK a Proscribed Terrorist Organisations has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", + "sourceExtract": "Tools and guidance for businesses Plan, set up and register a business Includes Corporation Tax, Capital Gains Tax, Construction Industry Scheme (CIS) and VAT Meet legal duties, file reports and manage risk Finance growth, innovate and win work Import goods to Great Britain and export goods Get research and development (R&D) funding, protect your intellectual property, and comply with data protection rules Help with financial problems and options for business turnaround or closure Manage waste, recycling and producer duties Includes managing sales and mergers, and updating tax and records Build, develop, rent out property or run construction services Start and run your restaurant, café, pub, shop or food business", "peopleInvolved": [], - "source": "ProtectUK (NPSA) a Protective Security Guidance", - "sourceUrl": "https://www.protectuk.police.uk/resources/741", + "source": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/browse/business", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", + "laneReason": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", "time": "Source date unconfirmed", "lat": 54.5, "lng": -2.5, "major": false, "publishedAt": null, - "keywordHits": [ - "explosive", - "device" - ], - "terrorismHits": [ - "terrorist" - ], - "eventType": "prevention_update", + "keywordHits": [], + "terrorismHits": [], + "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 2.6, "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "freshUntil": "2026-04-16T05:26:53.285Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-2c2a17e25f3076d3", - "source": "ProtectUK (NPSA) a Protective Security Guidance", - "sourceUrl": "https://www.protectuk.police.uk/resources/741", + "fusedIncidentId": "fusion-5ca9109524e5c684", + "source": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/browse/business", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, @@ -8666,96 +8265,102 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-2c2a17e25f3076d3" + "isDuplicateOf": "fusion-5ca9109524e5c684" }, { - "id": "eurojust-press-news-html-2", - "fusedIncidentId": "fusion-44be55f078401d1a", - "title": "Global Actions Hit Cocaine Traffickers In Brazil", - "location": "France", - "region": "eu", - "lane": "context", - "severity": "moderate", + "id": "gov-uk-proscribed-terrorist-orgs-3", + "fusedIncidentId": "fusion-05de7176aa2b9f85", + "title": "Home", + "location": "United Kingdom", + "region": "uk", + "lane": "sanctions", + "severity": "elevated", "status": "Update", - "actor": "Eurojust - Press Releases and News", - "subject": "Eurojust - Press Releases and News", + "actor": "GOV.UK a Proscribed Terrorist Organisations", + "subject": "GOV.UK a Proscribed Terrorist Organisations", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "The first ever joint investigation team (JIT) between French and Brazilian authorities, supported and funded by Eurojust, has dealt a significant blow to an international drug trafficking network. Following the discovery of 124 kg of cocaine on a cargo ship ar", - "aiSummary": "Eurojust - Press Releases and News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "The first ever joint investigation team (JIT) between French and Brazilian authorities, supported and funded by Eurojust, has dealt a significant blow to an international drug trafficking network. Following the discovery of 124 kg of cocaine on a cargo ship arriving at a port in France from Brazil, authorities from both countries worked together through a JIT to arrest key members of the network. Cooperation through the Eurojust-funded JIT led to the identification of the international criminal network behind the shipment of cocaine. The JIT framework enabled the authorities to exchange information and evidence in real time and carry out joint operations. On 10 March, the authorities took action against the criminal network operating in the port of Santos in Brazil. Two suspects were arrested and eight searches were carried out in Santos and Valinhos, resulting in the seizure of vehicles, weapons and watches. One of the suspects has been heard as a witness. Eurojust also supported earlier actions targeting the network’s members in Portugal. During these actions, three suspected importers were arrested. They have since then been surrendered to France. The drugs seized at the port of La Pallice in La Rochelle, France, are suspected to be linked to other shipments of narcotics from Brazil to Europe via international shipping routes. The suspected members of the group were responsible for the logistics of the shipments, ranging from the loading of narcotics onto ships to laundering the illicit profits from their trafficking operation. As criminal networks continue to operate on a global scale, cooperation among authorities worldwide is essential. Eurojust is scaling up its cooperation with judicial authorities outside the European Union. The Agency’s unique position in conn", + "summary": "Includes giving birth, fostering, adopting, benefits for children, childcare and schools Working, time off and financial support when you have a baby, registering a birth Fostering or adopting a child, including from abroad, and being a surrogate mother Includ", + "aiSummary": "GOV.UK a Proscribed Terrorist Organisations has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", + "sourceExtract": "Includes giving birth, fostering, adopting, benefits for children, childcare and schools Working, time off and financial support when you have a baby, registering a birth Fostering or adopting a child, including from abroad, and being a surrogate mother Includes help when having a baby or adopting, child benefit and tax credits, support for childcare Finding childcare, financial support for childcare and childcare for school-age children Sending a child to school, financial support, dealing with the school Child maintenance and disagreements about parentage", "peopleInvolved": [], - "source": "Eurojust - Press Releases and News", - "sourceUrl": "https://www.eurojust.europa.eu/news/global-actions-hit-cocaine-traffickers-brazil", + "source": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/browse/childcare-parenting", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "laneReason": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", "time": "Source date unconfirmed", - "lat": 46.6034, - "lng": 1.8883, + "lat": 54.5, + "lng": -2.5, "major": false, "publishedAt": null, - "keywordHits": [ - "arrest", - "arrested" - ], + "keywordHits": [], "terrorismHits": [], - "eventType": "context_update", - "geoPrecision": "region", + "eventType": "sanctions_update", + "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 2.6, "freshnessBucket": 1, - "freshUntil": "2026-04-10T09:11:31.394Z", + "freshUntil": "2026-04-16T05:26:53.285Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-05de7176aa2b9f85", + "source": "GOV.UK a Proscribed Terrorist Organisations", + "sourceUrl": "https://www.gov.uk/browse/childcare-parenting", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, + "confidence": "Verified official source update" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-05de7176aa2b9f85" }, { - "id": "eurojust-press-news-html-3", - "fusedIncidentId": "fusion-f3e584c9daf0e5db", - "title": "Financial Crime Investigation Culminates In Arrests And Frozen Assets Of High Value", - "location": "The Hague, Netherlands", + "id": "eu-council-terrorism-sanctions-1", + "fusedIncidentId": "fusion-900f214cab81c610", + "title": "Fight Against Money Laundering And Terrorist Financing In The EU", + "location": "Europe", "region": "eu", - "lane": "context", - "severity": "moderate", + "lane": "sanctions", + "severity": "elevated", "status": "Update", - "actor": "Eurojust - Press Releases and News", - "subject": "Eurojust - Press Releases and News", + "actor": "Council of the EU - Sanctions Against Terrorism", + "subject": "Council of the EU - Sanctions Against Terrorism", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "Two individuals suspected of committing serious economic and financial crimes resulting in losses amounting to tens of millions of euros have been arrested during an international operation coordinated from Eurojust. Over 400 investigators worked together acro", - "aiSummary": "Eurojust - Press Releases and News has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Two individuals suspected of committing serious economic and financial crimes resulting in losses amounting to tens of millions of euros have been arrested during an international operation coordinated from Eurojust. Over 400 investigators worked together across six countries to search 49 properties and gather essential evidence to continue the investigations. The individuals are under investigation for allegations of bankruptcy fraud, embezzlement and the breach of accounting obligations. The main suspect, a real estate developer in the Düsseldorf area, et al., allegedly moved large amounts of his private assets to other individuals’ accounts before filing for insolvency proceedings. By hiding these assets, he was able to defraud millions of euros. On 26 March, a coordinated operation took place across six countries. With coordination from the Eurojust headquarters, over 49 properties were searched in Germany, Austria, Luxembourg, the Netherlands, Spain and Switzerland. During the operation that was executed on behalf of the German authorities, the main suspect, as well as a suspected accomplice, were arrested in Spain and Germany respectively. The searches resulted in the seizure of large quantities of evidence, including mobile phones, computer equipment, business records and other documents. Authorities were also able to seize assets worth millions of euros, including cash, artworks, watches, handbags and a luxury sports car. Given that evidence and assets were scattered across Europe, authorities needed to work together to take action against the large-scale economic and financial crimes committed by the suspects. Multiple coordination meetings were organised at Eurojust making it possible for authorities to exchange information and plan the coordinated operation. ", + "summary": "Fight against money laundering and terrorist financing in the EU Fight against money laundering and terrorist financing in the EU", + "aiSummary": "Council of the EU - Sanctions Against Terrorism has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", + "sourceExtract": "Fight against money laundering and terrorist financing in the EU Fight against money laundering and terrorist financing in the EU", "peopleInvolved": [], - "source": "Eurojust - Press Releases and News", - "sourceUrl": "https://www.eurojust.europa.eu/news/financial-crime-investigation-culminates-arrests-and-frozen-assets-high-value", + "source": "Council of the EU - Sanctions Against Terrorism", + "sourceUrl": "https://www.consilium.europa.eu/en/policies/fight-against-terrorist-financing/", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "laneReason": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", "time": "Source date unconfirmed", - "lat": 52.0705, - "lng": 4.3007, + "lat": 54, + "lng": 15, "major": false, "publishedAt": null, - "keywordHits": [ - "suspect", - "arrested" + "keywordHits": [], + "terrorismHits": [ + "terrorist" ], - "terrorismHits": [], - "eventType": "context_update", - "geoPrecision": "region", + "eventType": "sanctions_update", + "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 2.6, "freshnessBucket": 1, - "freshUntil": "2026-04-10T09:11:31.394Z", + "freshUntil": "2026-04-15T20:35:56.070Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [], @@ -8763,105 +8368,96 @@ "isDuplicateOf": null }, { - "id": "independent-reviewer-terrorism-legislation-2", - "fusedIncidentId": "fusion-88b4648c71de081d", - "title": "19.5.25 State Threat And Terrorism Report", - "location": "United Kingdom", - "region": "uk", - "lane": "oversight", - "severity": "moderate", + "id": "eu-council-terrorism-sanctions-2", + "fusedIncidentId": "fusion-da9e4a491e5ac721", + "title": "Types Of Sanctions The EU Adopts", + "location": "Europe", + "region": "eu", + "lane": "sanctions", + "severity": "elevated", "status": "Update", - "actor": "Independent Reviewer of Terrorism Legislation a Reports", - "subject": "Independent Reviewer of Terrorism Legislation a Reports", + "actor": "Council of the EU - Sanctions Against Terrorism", + "subject": "Council of the EU - Sanctions Against Terrorism", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "19.5.25 State Threat and Terrorism report", - "aiSummary": "Independent Reviewer of Terrorism Legislation a Reports has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "19.5.25 State Threat and Terrorism report", + "summary": "Types of sanctions the EU adopts Types of sanctions the EU adopts", + "aiSummary": "Council of the EU - Sanctions Against Terrorism has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", + "sourceExtract": "Types of sanctions the EU adopts Types of sanctions the EU adopts", "peopleInvolved": [], - "source": "Independent Reviewer of Terrorism Legislation a Reports", - "sourceUrl": "https://terrorismlegislationreviewer.independent.gov.uk/wp-content/uploads/2025/05/19.5.25-State-Threat-and-Terrorism-report-1.pdf", + "source": "Council of the EU - Sanctions Against Terrorism", + "sourceUrl": "https://www.consilium.europa.eu/en/policies/sanctions-different-types/", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "laneReason": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", "time": "Source date unconfirmed", - "lat": 54.5, - "lng": -2.5, + "lat": 54, + "lng": 15, "major": false, "publishedAt": null, - "keywordHits": [ - "terrorism", - "threat" - ], - "terrorismHits": [ - "terrorism" - ], - "eventType": "oversight_update", + "keywordHits": [], + "terrorismHits": [], + "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.8, + "priorityScore": 2.6, "freshnessBucket": 1, - "freshUntil": "2026-04-13T23:36:29.665Z", + "freshUntil": "2026-04-15T20:35:56.070Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-88b4648c71de081d", - "source": "Independent Reviewer of Terrorism Legislation a Reports", - "sourceUrl": "https://terrorismlegislationreviewer.independent.gov.uk/wp-content/uploads/2025/05/19.5.25-State-Threat-and-Terrorism-report-1.pdf", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-88b4648c71de081d" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "eu-olaf-news-1", - "fusedIncidentId": "fusion-b7d3f8ceab069d7b", - "title": "HOME", - "location": "Europe", + "id": "isd-global-publications-3", + "fusedIncidentId": "fusion-21b3cc849afa8f51", + "title": "Far-Right Extremism - Institute For Strategic Dialogue", + "location": "Canada", "region": "eu", - "lane": "oversight", + "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "OLAF (EU Anti-Fraud Office) a News", - "subject": "OLAF (EU Anti-Fraud Office) a News", + "actor": "ISD - Publications", + "subject": "ISD - Publications", "happenedWhen": "Source date unconfirmed", - "confidence": "Verified official source update", - "confidenceScore": 0.76, - "summary": "Press release no 4/2026PDF version The European Anti-Fraud Office (OLAF) has supported Albanian authorities in uncovering and stopping the illegal export of hazardous industrial waste from the port of Durrës, Albania to Thailand, highlighting the growing globa", - "aiSummary": "OLAF (EU Anti-Fraud Office) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "Press release no 4/2026PDF version The European Anti-Fraud Office (OLAF) has supported Albanian authorities in uncovering and stopping the illegal export of hazardous industrial waste from the port of Durrës, Albania to Thailand, highlighting the growing global threat posed by illegal waste trafficking. The investigation began in 2024 when OLAF alerted the Albanian customs authorities to a shipment suspected of containing large quantities of misdeclared hazardous waste. Export documents described the cargo as iron oxide. However, subsequent laboratory analysis later established that the cargo, in fact contained a toxic by-product of steel production. While iron oxide is widely used in legitimate industrial applications – such as construction materials and metallurgy – and is generally considered non-hazardous when properly handled, certain steelmaking residues are classified as hazardous materials as they often contain elevated concentrations of heavy metals. If improperly managed or disposed of, they pose serious risks to health and the environment, including soil and groundwater contamination and long-term toxic exposure for nearby communities. This was the case with the shipment identified. Working closely with the Albanian Customs Investigation Directorate, OLAF helped coordinate operational actions that prevented the hazardous waste from being disposed of unlawfully abroad. OLAF further supported the investigation by organising and participating in several operational meetings with the Albanian Customs Investigation Directorate and the Durrës Prosecution Office, facilitating exchanges that proved key to advancing the case. The cooperation led to the interception of the shipment and its ultimate return to its country of origin. It also supported national proceedings", + "confidence": "Research or analytical source", + "confidenceScore": 0.6, + "summary": "Far-right extremist groups including neo-Nazis, white supremacists and Active Clubs have become increasingly mainstream over the past decade. Their beliefs threaten national and community security, democratic values and individual rights. ISD’s work to counter", + "aiSummary": "ISD - Publications has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "Far-right extremist groups including neo-Nazis, white supremacists and Active Clubs have become increasingly mainstream over the past decade. Their beliefs threaten national and community security, democratic values and individual rights. ISD’s work to counter these ideologies includes providing insights to law enforcement and policy makers around illegal activity, while building community resilience to extremist indoctrination. March 17, 2026 Since 2021, “White Nationalism 3.0” has spread in Canada, using fitness and clubs to normalize extremism and enable new paths to violence. Far-Right Extremism, Terrorism and Extremism December 23, 2025 The true nature of Canada’s largest white nationalist group Far-Right Extremism, Identity-Based Hate and Abuse December 15, 2025 Suspected members of The Base arrested in Spain Far-Right Extremism November 21, 2025 The rise of white nationalism and Active Clubs in Canada", "peopleInvolved": [], - "source": "OLAF (EU Anti-Fraud Office) a News", - "sourceUrl": "https://anti-fraud.ec.europa.eu/media-corner/news/olaf-helps-stop-illegal-export-hazardous-industrial-waste-albania-2026-02-13_en", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "source": "ISD - Publications", + "sourceUrl": "https://www.isdglobal.org/our-expertise/terrorism-and-extremism/far-right-extremism/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", "time": "Source date unconfirmed", - "lat": 54, - "lng": 15, + "lat": 56.1304, + "lng": -106.3468, "major": false, "publishedAt": null, "keywordHits": [ - "arrest", - "threat" + "terrorism", + "arrested", + "extremist" ], - "terrorismHits": [], - "eventType": "oversight_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 2.8, + "terrorismHits": [ + "terrorism", + "extremist", + "extremism", + "far-right extremist" + ], + "eventType": "prevention_update", + "geoPrecision": "region", + "isOfficial": false, + "priorityScore": 2.5, "freshnessBucket": 1, - "freshUntil": "2026-04-13T15:35:04.347Z", + "freshUntil": "2026-04-13T21:34:40.140Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [], @@ -8869,49 +8465,51 @@ "isDuplicateOf": null }, { - "id": "state-dept-terrorism-0", - "fusedIncidentId": "fusion-207765839fceae71", - "title": "The Global Coalition To Defeat ISIS - United States Department Of State", - "location": "United States", - "region": "us", - "lane": "context", + "id": "tech-against-terrorism-home-2", + "fusedIncidentId": "fusion-8b90d3a2977bc83a", + "title": "Archive Database Hash List API | Tech Against Terrorism", + "location": "Europe", + "region": "international", + "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "US State Department a Bureau of Counterterrorism", - "subject": "US State Department a Bureau of Counterterrorism", + "actor": "Tech Against Terrorism - Home", + "subject": "Tech Against Terrorism - Home", "happenedWhen": "Source date unconfirmed", - "confidence": "Verified official source update", - "confidenceScore": 0.76, - "summary": "On September 10, 2014, the U.S. announced the formation of a broad international coalition to defeat the Islamic State of Iraq and Syria (ISIS).", - "aiSummary": "US State Department a Bureau of Counterterrorism has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "On September 10, 2014, the U.S. announced the formation of a broad international coalition to defeat the Islamic State of Iraq and Syria (ISIS).", + "confidence": "Research or analytical source", + "confidenceScore": 0.6, + "summary": "Terrorist Content Analytics Platform Archive Database. Hash List API Of terrorist and violent extremist media files collected via automated systems and our threat intelligence team. + Tech Platforms contact@techagainstterrorism.org", + "aiSummary": "Tech Against Terrorism - Home has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "Terrorist Content Analytics Platform Archive Database. Hash List API Of terrorist and violent extremist media files collected via automated systems and our threat intelligence team. + Tech Platforms contact@techagainstterrorism.org", "peopleInvolved": [], - "source": "US State Department a Bureau of Counterterrorism", - "sourceUrl": "https://www.state.gov/bureaus-offices/under-secretary-for-political-affairs/bureau-of-counterterrorism/the-global-coalition-to-defeat-isis/", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "source": "Tech Against Terrorism - Home", + "sourceUrl": "https://techagainstterrorism.org/tcap-adhla", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", "time": "Source date unconfirmed", - "lat": 39.8283, - "lng": -98.5795, + "lat": 54, + "lng": 15, "major": false, "publishedAt": null, "keywordHits": [ - "isis", - "islamic state" + "terrorism", + "extremist", + "threat" ], "terrorismHits": [ - "isis", - "islamic state" + "terrorism", + "terrorist", + "extremist" ], - "eventType": "context_update", - "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 2.8, + "eventType": "prevention_update", + "geoPrecision": "country", + "isOfficial": false, + "priorityScore": 2.5, "freshnessBucket": 1, - "freshUntil": "2026-04-09T14:36:11.004Z", + "freshUntil": "2026-04-13T19:34:41.462Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [], @@ -8919,101 +8517,113 @@ "isDuplicateOf": null }, { - "id": "state-dept-terrorism-1", - "fusedIncidentId": "fusion-98b0411f92aa4ffa", - "title": "Country Reports On Terrorism - United States Department Of State", - "location": "United States", - "region": "us", - "lane": "context", + "id": "gnet-research-1", + "fusedIncidentId": "fusion-57459d5de53590da", + "title": "Jedag Jedug Jihadists: How Tik. Tok Edits Turn Glorification Of Jemaah Islamiyah Figures Into Entertainment", + "location": "Indonesia", + "region": "uk", + "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "US State Department a Bureau of Counterterrorism", - "subject": "US State Department a Bureau of Counterterrorism", - "happenedWhen": "Source date unconfirmed", - "confidence": "Verified official source update", - "confidenceScore": 0.76, - "summary": "Bureau of Counterterrorism U.S. law requires the Secretary of State to provide Congress, by April 30 of each year, a full and complete report on terrorism with regard to those countries and groups meeting criteria set forth in the legislation. This annual repo", - "aiSummary": "US State Department a Bureau of Counterterrorism has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "Bureau of Counterterrorism U.S. law requires the Secretary of State to provide Congress, by April 30 of each year, a full and complete report on terrorism with regard to those countries and groups meeting criteria set forth in the legislation. This annual report is entitled Country Reports on Terrorism. Beginning with the report for 2004, it replaced the previously published Patterns of Global Terrorism. The report covers developments in countries in which acts of terrorism occurred, countries that are state sponsors of terrorism, and countries determined by the Secretary to be of particular interest in the global war on terror. As provided in the legislation, the report reviews major developments in bilateral and multilateral counterterrorism cooperation as well. The report also provides information on terrorist groups responsible for the death, kidnapping, or injury of Americans, any umbrella groups to which they might belong, groups financed by state sponsors of terrorism, reports on all terrorist organizations on the Foreign Terrorist Organization (FTO) list, and other terrorist groups determined by the Secretary to be relevant to the report. Beginning with the report for 2005, Country Reports on Terrorism will also address terrorist sanctuaries and terrorist attempts to acquire weapons of mass destruction. It will also include statistical information provided by the National Counterterrorism Center (NCTC) on the number of individuals killed, injured, or kidnapped by terrorist groups. Tags", + "actor": "Global Network on Extremism & Technology (GNET) a Main Feed", + "subject": "Global Network on Extremism & Technology (GNET) a Main Feed", + "happenedWhen": "15 Apr 2026, 00:42", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "On Indonesian Tik. Tok, figures associated with past Jemaah Islamiyah (JI) terrorist attacks are quietly reentering public view, not through active news coverage or historical documentaries, but through short, stylised video edits designed for entertainment. I", + "aiSummary": "Global Network on Extremism & Technology (GNET) a Main Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "On Indonesian Tik. Tok, figures associated with past Jemaah Islamiyah (JI) terrorist attacks are quietly reentering public view, not through active news coverage or historical documentaries, but through short, stylised video edits designed for entertainment. Indonesia offers a particularly revealing case study for observing this trend, given its Tik. Tok user base of roughly 100 million adult users as of early 2025 […]", "peopleInvolved": [], - "source": "US State Department a Bureau of Counterterrorism", - "sourceUrl": "https://www.state.gov/country-reports-on-terrorism/", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "source": "Global Network on Extremism & Technology (GNET) a Main Feed", + "sourceUrl": "https://gnet-research.org/2026/04/15/jedag-jedug-jihadists-how-tiktok-edits-turn-glorification-of-jemaah-islamiyah-figures-into-entertainment/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "time": "Source date unconfirmed", - "lat": 39.8283, - "lng": -98.5795, + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "queueBucket": "prevention", + "time": "15 Apr 2026, 00:42", + "lat": -0.7893, + "lng": 113.9213, "major": false, - "publishedAt": null, + "publishedAt": "2026-04-14T23:42:14.000Z", "keywordHits": [ - "terror", - "terrorism" + "attacks" ], "terrorismHits": [ - "terror", - "terrorism", "terrorist" ], - "eventType": "context_update", + "eventType": "prevention_update", "geoPrecision": "region", - "isOfficial": true, - "priorityScore": 2.8, + "isOfficial": false, + "priorityScore": 2.3, "freshnessBucket": 1, - "freshUntil": "2026-04-09T14:36:11.004Z", + "freshUntil": "2026-04-22T23:42:14.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-57459d5de53590da", + "source": "Global Network on Extremism & Technology (GNET) a Main Feed", + "sourceUrl": "https://gnet-research.org/2026/04/15/jedag-jedug-jihadists-how-tiktok-edits-turn-glorification-of-jemaah-islamiyah-figures-into-entertainment/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "publishedAt": "2026-04-14T23:42:14.000Z", + "confidence": "Research or analytical source" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-57459d5de53590da" }, { - "id": "gov-uk-proscribed-terrorist-orgs-1", - "fusedIncidentId": "fusion-4c041e3e6cba1329", - "title": "Home", + "id": "parliament-public-bills-rss-0", + "fusedIncidentId": "fusion-a3d6ee7188e5d198", + "title": "Crime And Policing Bill", "location": "United Kingdom", "region": "uk", - "lane": "sanctions", - "severity": "elevated", + "lane": "oversight", + "severity": "moderate", "status": "Update", - "actor": "GOV.UK a Proscribed Terrorist Organisations", - "subject": "GOV.UK a Proscribed Terrorist Organisations", + "actor": "Parliament - Public Bills RSS", + "subject": "Parliament - Public Bills RSS", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "Parenting, civil partnerships, divorce and Lasting Power of Attorney Birth certificates, registering a death, marriage, family history and correcting certificates Information about eligibility, claiming and when Child Benefit stops Reporting a death, wills, pr", - "aiSummary": "GOV.UK a Proscribed Terrorist Organisations has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", - "sourceExtract": "Parenting, civil partnerships, divorce and Lasting Power of Attorney Birth certificates, registering a death, marriage, family history and correcting certificates Information about eligibility, claiming and when Child Benefit stops Reporting a death, wills, probate and Inheritance Tax Legal rights, parental rights and child maintenance Includes dealing with benefits, taxes and leaving care Includes getting married abroad, decree absolutes and looking after children", + "summary": "A Bill to make provision about anti-social behaviour, offensive weapons, offences against people (including sexual offences), property offences, the criminal exploitation of persons, sex offenders, stalking and public order; to make provision about powers of t", + "aiSummary": "Parliament - Public Bills RSS has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", + "sourceExtract": "A Bill to make provision about anti-social behaviour, offensive weapons, offences against people (including sexual offences), property offences, the criminal exploitation of persons, sex offenders, stalking and public order; to make provision about powers of the police, the border force and other similar persons; to make provision about confiscation; to make provision about the police; to make provision about terrorism and national security, and about international agreements relating to crime; to make provision about the criminal liability of bodies; and for connected purposes.", "peopleInvolved": [], - "source": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/browse/births-deaths-marriages", + "source": "Parliament - Public Bills RSS", + "sourceUrl": "https://bills.parliament.uk/bills/3938", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", + "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", "time": "Source date unconfirmed", "lat": 54.5, "lng": -2.5, "major": false, "publishedAt": null, - "keywordHits": [], - "terrorismHits": [], - "eventType": "sanctions_update", + "keywordHits": [ + "terrorism" + ], + "terrorismHits": [ + "terrorism" + ], + "eventType": "oversight_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.6, + "priorityScore": 2.2, "freshnessBucket": 1, - "freshUntil": "2026-04-16T05:26:53.285Z", + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-4c041e3e6cba1329", - "source": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/browse/births-deaths-marriages", + "fusedIncidentId": "fusion-a3d6ee7188e5d198", + "source": "Parliament - Public Bills RSS", + "sourceUrl": "https://bills.parliament.uk/bills/3938", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, @@ -9021,53 +8631,55 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-4c041e3e6cba1329" + "isDuplicateOf": "fusion-a3d6ee7188e5d198" }, { - "id": "gov-uk-proscribed-terrorist-orgs-2", - "fusedIncidentId": "fusion-5ca9109524e5c684", - "title": "Home", + "id": "europol-news-rss-0", + "fusedIncidentId": "fusion-3baa21b198f276f4", + "title": "Up To EUR 50 000 For A Passage To The UK: 19 Suspected Migrant Smugglers Arrested", "location": "United Kingdom", - "region": "uk", - "lane": "sanctions", - "severity": "elevated", + "region": "eu", + "lane": "context", + "severity": "moderate", "status": "Update", - "actor": "GOV.UK a Proscribed Terrorist Organisations", - "subject": "GOV.UK a Proscribed Terrorist Organisations", + "actor": "Europol a Newsroom (RSS)", + "subject": "Europol a Newsroom (RSS)", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "Tools and guidance for businesses Plan, set up and register a business Includes Corporation Tax, Capital Gains Tax, Construction Industry Scheme (CIS) and VAT Meet legal duties, file reports and manage risk Finance growth, innovate and win work Import goods to", - "aiSummary": "GOV.UK a Proscribed Terrorist Organisations has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", - "sourceExtract": "Tools and guidance for businesses Plan, set up and register a business Includes Corporation Tax, Capital Gains Tax, Construction Industry Scheme (CIS) and VAT Meet legal duties, file reports and manage risk Finance growth, innovate and win work Import goods to Great Britain and export goods Get research and development (R&D) funding, protect your intellectual property, and comply with data protection rules Help with financial problems and options for business turnaround or closure Manage waste, recycling and producer duties Includes managing sales and mergers, and updating tax and records Build, develop, rent out property or run construction services Start and run your restaurant, café, pub, shop or food business", - "peopleInvolved": [], - "source": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/browse/business", + "summary": "On 30 March 2025, Europol supported an action day against criminal networks smuggling migrants from Vietnam to the European Union and the United Kingdom. Law enforcement authorities across Europe have intensified their efforts to disrupt migrant smuggling netw", + "aiSummary": "Europol a Newsroom (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "On 30 March 2025, Europol supported an action day against criminal networks smuggling migrants from Vietnam to the European Union and the United Kingdom. Law enforcement authorities across Europe have intensified their efforts to disrupt migrant smuggling networks as part of a coordinated whole-route approach addressing every stage of the criminal business model.", + "peopleInvolved": [], + "source": "Europol a Newsroom (RSS)", + "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/eur-50-000-for-passage-to-uk-19-suspected-migrant-smugglers-arrested", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "time": "Source date unconfirmed", "lat": 54.5, "lng": -2.5, "major": false, "publishedAt": null, - "keywordHits": [], + "keywordHits": [ + "arrested" + ], "terrorismHits": [], - "eventType": "sanctions_update", + "eventType": "context_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.6, + "priorityScore": 2.2, "freshnessBucket": 1, - "freshUntil": "2026-04-16T05:26:53.285Z", + "freshUntil": "2026-04-10T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-5ca9109524e5c684", - "source": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/browse/business", + "fusedIncidentId": "fusion-3baa21b198f276f4", + "source": "Europol a Newsroom (RSS)", + "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/eur-50-000-for-passage-to-uk-19-suspected-migrant-smugglers-arrested", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, @@ -9075,53 +8687,55 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-5ca9109524e5c684" + "isDuplicateOf": "fusion-3baa21b198f276f4" }, { - "id": "gov-uk-proscribed-terrorist-orgs-3", - "fusedIncidentId": "fusion-05de7176aa2b9f85", - "title": "Home", + "id": "europol-news-rss-3", + "fusedIncidentId": "fusion-b837d7a4dac2cb7e", + "title": "Small Boats Supply Chain Disrupted: 21 Arrested For Supplying Channel Smugglers With Nautical Equipment", "location": "United Kingdom", - "region": "uk", - "lane": "sanctions", - "severity": "elevated", + "region": "eu", + "lane": "context", + "severity": "moderate", "status": "Update", - "actor": "GOV.UK a Proscribed Terrorist Organisations", - "subject": "GOV.UK a Proscribed Terrorist Organisations", + "actor": "Europol a Newsroom (RSS)", + "subject": "Europol a Newsroom (RSS)", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "Includes giving birth, fostering, adopting, benefits for children, childcare and schools Working, time off and financial support when you have a baby, registering a birth Fostering or adopting a child, including from abroad, and being a surrogate mother Includ", - "aiSummary": "GOV.UK a Proscribed Terrorist Organisations has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", - "sourceExtract": "Includes giving birth, fostering, adopting, benefits for children, childcare and schools Working, time off and financial support when you have a baby, registering a birth Fostering or adopting a child, including from abroad, and being a surrogate mother Includes help when having a baby or adopting, child benefit and tax credits, support for childcare Finding childcare, financial support for childcare and childcare for school-age children Sending a child to school, financial support, dealing with the school Child maintenance and disagreements about parentage", + "summary": "A joint investigation conducted under the framework of a Europol task force resulted in a significant disruption of the migrant smuggling supply chain serving criminal networks active along the English Channel. This operation is the outcome of close cooperatio", + "aiSummary": "Europol a Newsroom (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", + "sourceExtract": "A joint investigation conducted under the framework of a Europol task force resulted in a significant disruption of the migrant smuggling supply chain serving criminal networks active along the English Channel. This operation is the outcome of close cooperation between law enforcement and judicial authorities from Belgium, France, Germany, the Netherlands, and the United Kingdom, with support from Eurojust.", "peopleInvolved": [], - "source": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/browse/childcare-parenting", + "source": "Europol a Newsroom (RSS)", + "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/small-boats-supply-chain-disrupted-21-arrested-for-supplying-channel-smugglers-nautical-equipment", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", + "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", + "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", "time": "Source date unconfirmed", "lat": 54.5, "lng": -2.5, "major": false, "publishedAt": null, - "keywordHits": [], + "keywordHits": [ + "arrested" + ], "terrorismHits": [], - "eventType": "sanctions_update", + "eventType": "context_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.6, + "priorityScore": 2.2, "freshnessBucket": 1, - "freshUntil": "2026-04-16T05:26:53.285Z", + "freshUntil": "2026-04-10T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-05de7176aa2b9f85", - "source": "GOV.UK a Proscribed Terrorist Organisations", - "sourceUrl": "https://www.gov.uk/browse/childcare-parenting", + "fusedIncidentId": "fusion-b837d7a4dac2cb7e", + "source": "Europol a Newsroom (RSS)", + "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/small-boats-supply-chain-disrupted-21-arrested-for-supplying-channel-smugglers-nautical-equipment", "sourceTier": "context", "reliabilityProfile": "official_context", "publishedAt": null, @@ -9129,1437 +8743,962 @@ } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-05de7176aa2b9f85" + "isDuplicateOf": "fusion-b837d7a4dac2cb7e" }, { - "id": "eu-council-terrorism-sanctions-1", - "fusedIncidentId": "fusion-900f214cab81c610", - "title": "Fight Against Money Laundering And Terrorist Financing In The EU", - "location": "Europe", - "region": "eu", - "lane": "sanctions", - "severity": "elevated", + "id": "gov-uk-prevent-strategy-3", + "fusedIncidentId": "fusion-4149c5459ed69f90", + "title": "Counter-Terrorism And Security Act 2015", + "location": "United Kingdom", + "region": "uk", + "lane": "prevention", + "severity": "moderate", "status": "Update", - "actor": "Council of the EU - Sanctions Against Terrorism", - "subject": "Council of the EU - Sanctions Against Terrorism", + "actor": "UK Home Office - Prevent duty guidance", + "subject": "UK Home Office - Prevent duty guidance", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "Fight against money laundering and terrorist financing in the EU Fight against money laundering and terrorist financing in the EU", - "aiSummary": "Council of the EU - Sanctions Against Terrorism has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", - "sourceExtract": "Fight against money laundering and terrorist financing in the EU Fight against money laundering and terrorist financing in the EU", + "summary": "An Act to make provision in relation to terrorism; to make provision about retention of communications data, about information, authority to carry and security in relation to air, sea and rail transport and about reviews by the Special Immigration Appeals Comm", + "aiSummary": "UK Home Office - Prevent duty guidance has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "An Act to make provision in relation to terrorism; to make provision about retention of communications data, about information, authority to carry and security in relation to air, sea and rail transport and about reviews by the Special Immigration Appeals Commission against refusals to issue certificates of naturalisation; and for connected purposes.", "peopleInvolved": [], - "source": "Council of the EU - Sanctions Against Terrorism", - "sourceUrl": "https://www.consilium.europa.eu/en/policies/fight-against-terrorist-financing/", + "source": "UK Home Office - Prevent duty guidance", + "sourceUrl": "https://www.legislation.gov.uk/ukpga/2015/6/section/29", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", "time": "Source date unconfirmed", - "lat": 54, - "lng": 15, + "lat": 54.5, + "lng": -2.5, "major": false, "publishedAt": null, - "keywordHits": [], + "keywordHits": [ + "terrorism" + ], "terrorismHits": [ - "terrorist" + "terrorism" ], - "eventType": "sanctions_update", + "eventType": "prevention_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.6, + "priorityScore": 2.2, "freshnessBucket": 1, - "freshUntil": "2026-04-15T20:35:56.070Z", + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-4149c5459ed69f90", + "source": "GOV.UK a Prevent Duty Guidance (Collection)", + "sourceUrl": "https://www.legislation.gov.uk/ukpga/2015/6/section/29", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, + "confidence": "Verified official source update" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-4149c5459ed69f90" }, { - "id": "eu-council-terrorism-sanctions-2", - "fusedIncidentId": "fusion-da9e4a491e5ac721", - "title": "Types Of Sanctions The EU Adopts", + "id": "sapo-se-english-0", + "fusedIncidentId": "fusion-077a74df844621a3", + "title": "About The Swedish Security Service", "location": "Europe", - "region": "eu", - "lane": "sanctions", - "severity": "elevated", + "region": "europe", + "lane": "prevention", + "severity": "moderate", "status": "Update", - "actor": "Council of the EU - Sanctions Against Terrorism", - "subject": "Council of the EU - Sanctions Against Terrorism", + "actor": "Swedish Security Service English news", + "subject": "Swedish Security Service English news", "happenedWhen": "Source date unconfirmed", "confidence": "Verified official source update", "confidenceScore": 0.76, - "summary": "Types of sanctions the EU adopts Types of sanctions the EU adopts", - "aiSummary": "Council of the EU - Sanctions Against Terrorism has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", - "sourceExtract": "Types of sanctions the EU adopts Types of sanctions the EU adopts", + "summary": "The Swedish Security Service prevents and detects offences against national security, fights terrorism and protects the central Government. The purpose of our activities is to protect the democratic system, the rights and freedoms of our citizens and national ", + "aiSummary": "Swedish Security Service English news has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "The Swedish Security Service prevents and detects offences against national security, fights terrorism and protects the central Government. The purpose of our activities is to protect the democratic system, the rights and freedoms of our citizens and national security.", "peopleInvolved": [], - "source": "Council of the EU - Sanctions Against Terrorism", - "sourceUrl": "https://www.consilium.europa.eu/en/policies/sanctions-different-types/", + "source": "Swedish Security Service English news", + "sourceUrl": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/about-the-swedish-security-service.html", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", "time": "Source date unconfirmed", "lat": 54, "lng": 15, "major": false, "publishedAt": null, - "keywordHits": [], - "terrorismHits": [], - "eventType": "sanctions_update", + "keywordHits": [ + "terrorism" + ], + "terrorismHits": [ + "terrorism" + ], + "eventType": "prevention_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.6, + "priorityScore": 2.2, "freshnessBucket": 1, - "freshUntil": "2026-04-15T20:35:56.070Z", + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-077a74df844621a3", + "source": "Swedish Security Service English news", + "sourceUrl": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/about-the-swedish-security-service.html", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, + "confidence": "Verified official source update" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-077a74df844621a3" }, { - "id": "isd-global-publications-3", - "fusedIncidentId": "fusion-21b3cc849afa8f51", - "title": "Far-Right Extremism - Institute For Strategic Dialogue", - "location": "Canada", - "region": "eu", + "id": "sapo-se-english-3", + "fusedIncidentId": "fusion-971df53ad3fa6ad8", + "title": "National Centre For Terrorist Threat Assessment", + "location": "Europe", + "region": "europe", "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "ISD - Publications", - "subject": "ISD - Publications", + "actor": "Swedish Security Service English news", + "subject": "Swedish Security Service English news", "happenedWhen": "Source date unconfirmed", - "confidence": "Research or analytical source", - "confidenceScore": 0.6, - "summary": "Far-right extremist groups including neo-Nazis, white supremacists and Active Clubs have become increasingly mainstream over the past decade. Their beliefs threaten national and community security, democratic values and individual rights. ISD’s work to counter", - "aiSummary": "ISD - Publications has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "Far-right extremist groups including neo-Nazis, white supremacists and Active Clubs have become increasingly mainstream over the past decade. Their beliefs threaten national and community security, democratic values and individual rights. ISD’s work to counter these ideologies includes providing insights to law enforcement and policy makers around illegal activity, while building community resilience to extremist indoctrination. March 17, 2026 Since 2021, “White Nationalism 3.0” has spread in Canada, using fitness and clubs to normalize extremism and enable new paths to violence. Far-Right Extremism, Terrorism and Extremism December 23, 2025 The true nature of Canada’s largest white nationalist group Far-Right Extremism, Identity-Based Hate and Abuse December 15, 2025 Suspected members of The Base arrested in Spain Far-Right Extremism November 21, 2025 The rise of white nationalism and Active Clubs in Canada", + "confidence": "Verified official source update", + "confidenceScore": 0.76, + "summary": "National Centre for Terrorist Threat Assessment", + "aiSummary": "Swedish Security Service English news has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "National Centre for Terrorist Threat Assessment", "peopleInvolved": [], - "source": "ISD - Publications", - "sourceUrl": "https://www.isdglobal.org/our-expertise/terrorism-and-extremism/far-right-extremism/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", + "source": "Swedish Security Service English news", + "sourceUrl": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/what-we-do/counter-terrorism/national-centre-for-terrorist-threat-assessment.html", + "sourceTier": "context", + "reliabilityProfile": "official_context", "incidentTrack": "", "laneReason": "Prevention, radicalisation, or analytical context source.", "queueReason": "Prevention, radicalisation, or analytical context source.", "time": "Source date unconfirmed", - "lat": 56.1304, - "lng": -106.3468, + "lat": 54, + "lng": 15, "major": false, "publishedAt": null, "keywordHits": [ - "terrorism", - "arrested", - "extremist" + "threat" ], "terrorismHits": [ - "terrorism", - "extremist", - "extremism", - "far-right extremist" + "terrorist" ], "eventType": "prevention_update", - "geoPrecision": "region", - "isOfficial": false, - "priorityScore": 2.5, + "geoPrecision": "country", + "isOfficial": true, + "priorityScore": 2.2, "freshnessBucket": 1, - "freshUntil": "2026-04-13T21:34:40.140Z", + "freshUntil": "2026-04-14T09:11:31.394Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null - }, - { - "id": "tech-against-terrorism-home-2", - "fusedIncidentId": "fusion-8b90d3a2977bc83a", - "title": "Archive Database Hash List API | Tech Against Terrorism", - "location": "Europe", - "region": "international", - "lane": "prevention", - "severity": "moderate", - "status": "Update", - "actor": "Tech Against Terrorism - Home", - "subject": "Tech Against Terrorism - Home", - "happenedWhen": "Source date unconfirmed", - "confidence": "Research or analytical source", - "confidenceScore": 0.6, - "summary": "Terrorist Content Analytics Platform Archive Database. Hash List API Of terrorist and violent extremist media files collected via automated systems and our threat intelligence team. + Tech Platforms contact@techagainstterrorism.org", - "aiSummary": "Tech Against Terrorism - Home has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "Terrorist Content Analytics Platform Archive Database. Hash List API Of terrorist and violent extremist media files collected via automated systems and our threat intelligence team. + Tech Platforms contact@techagainstterrorism.org", - "peopleInvolved": [], - "source": "Tech Against Terrorism - Home", - "sourceUrl": "https://techagainstterrorism.org/tcap-adhla", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "time": "Source date unconfirmed", - "lat": 54, - "lng": 15, - "major": false, - "publishedAt": null, - "keywordHits": [ - "terrorism", - "extremist", - "threat" - ], - "terrorismHits": [ - "terrorism", - "terrorist", - "extremist" + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-971df53ad3fa6ad8", + "source": "Swedish Security Service English news", + "sourceUrl": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/what-we-do/counter-terrorism/national-centre-for-terrorist-threat-assessment.html", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": null, + "confidence": "Verified official source update" + } ], - "eventType": "prevention_update", - "geoPrecision": "country", - "isOfficial": false, - "priorityScore": 2.5, - "freshnessBucket": 1, - "freshUntil": "2026-04-13T19:34:41.462Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroborationCount": 1, + "isDuplicateOf": "fusion-971df53ad3fa6ad8" }, { - "id": "gnet-research-1", - "fusedIncidentId": "fusion-57459d5de53590da", - "title": "Jedag Jedug Jihadists: How Tik. Tok Edits Turn Glorification Of Jemaah Islamiyah Figures Into Entertainment", - "location": "Indonesia", + "id": "gnet-research-2", + "fusedIncidentId": "fusion-d4ce1d4b7d0d4389", + "title": "Beyond The Clan: Identity Formation, Influence, And Extremist Milieux In Online Gaming-Adjacent Spaces", + "location": "United Kingdom", "region": "uk", "lane": "prevention", "severity": "moderate", "status": "Update", "actor": "Global Network on Extremism & Technology (GNET) a Main Feed", "subject": "Global Network on Extremism & Technology (GNET) a Main Feed", - "happenedWhen": "15 Apr 2026, 00:42", + "happenedWhen": "17 Apr 2026, 00:46", "confidence": "Research or analytical source", "confidenceScore": 0.68, - "summary": "On Indonesian Tik. Tok, figures associated with past Jemaah Islamiyah (JI) terrorist attacks are quietly reentering public view, not through active news coverage or historical documentaries, but through short, stylised video edits designed for entertainment. I", + "summary": "Over the past two decades, gaming environments have become increasingly social and massified. Multiplayer games allow players to cooperate, compete, and communicate in real time, while adjacent platforms (such as Discord or Twitch) extend interaction beyond ga", "aiSummary": "Global Network on Extremism & Technology (GNET) a Main Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "On Indonesian Tik. Tok, figures associated with past Jemaah Islamiyah (JI) terrorist attacks are quietly reentering public view, not through active news coverage or historical documentaries, but through short, stylised video edits designed for entertainment. Indonesia offers a particularly revealing case study for observing this trend, given its Tik. Tok user base of roughly 100 million adult users as of early 2025 […]", + "sourceExtract": "Over the past two decades, gaming environments have become increasingly social and massified. Multiplayer games allow players to cooperate, compete, and communicate in real time, while adjacent platforms (such as Discord or Twitch) extend interaction beyond gameplay itself. Scholars studying gaming cultures have long emphasised the importance of these spaces for community building and identity construction (see, for example Gray, […]", "peopleInvolved": [], "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/15/jedag-jedug-jihadists-how-tiktok-edits-turn-glorification-of-jemaah-islamiyah-figures-into-entertainment/", + "sourceUrl": "https://gnet-research.org/2026/04/17/beyond-the-clan-identity-formation-influence-and-extremist-milieux-in-online-gaming-adjacent-spaces/", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Prevention, radicalisation, or analytical context source.", "queueReason": "Prevention, radicalisation, or analytical context source.", "queueBucket": "prevention", - "time": "15 Apr 2026, 00:42", - "lat": -0.7893, - "lng": 113.9213, + "time": "17 Apr 2026, 00:46", + "lat": 54.5, + "lng": -2.5, "major": false, - "publishedAt": "2026-04-14T23:42:14.000Z", + "publishedAt": "2026-04-16T23:46:13.000Z", "keywordHits": [ - "attacks" + "extremist" ], "terrorismHits": [ - "terrorist" + "extremist" ], "eventType": "prevention_update", - "geoPrecision": "region", + "geoPrecision": "country", "isOfficial": false, - "priorityScore": 2.3, - "freshnessBucket": 1, - "freshUntil": "2026-04-22T23:42:14.000Z", + "priorityScore": -1.7, + "freshnessBucket": 0, + "freshUntil": "2026-04-24T23:46:13.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-57459d5de53590da", + "fusedIncidentId": "fusion-d4ce1d4b7d0d4389", "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/15/jedag-jedug-jihadists-how-tiktok-edits-turn-glorification-of-jemaah-islamiyah-figures-into-entertainment/", + "sourceUrl": "https://gnet-research.org/2026/04/17/beyond-the-clan-identity-formation-influence-and-extremist-milieux-in-online-gaming-adjacent-spaces/", "sourceTier": "research", "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-14T23:42:14.000Z", + "publishedAt": "2026-04-16T23:46:13.000Z", "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-57459d5de53590da" + "isDuplicateOf": "fusion-d4ce1d4b7d0d4389" }, { - "id": "parliament-public-bills-rss-0", - "fusedIncidentId": "fusion-a3d6ee7188e5d198", - "title": "Crime And Policing Bill", + "id": "uk-ofsi-blog-0", + "fusedIncidentId": "fusion-6e40ebbbf721ca80", + "title": "OFSI Strategy 2026-29", "location": "United Kingdom", "region": "uk", - "lane": "oversight", - "severity": "moderate", + "lane": "sanctions", + "severity": "elevated", "status": "Update", - "actor": "Parliament - Public Bills RSS", - "subject": "Parliament - Public Bills RSS", - "happenedWhen": "Source date unconfirmed", + "actor": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "subject": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "happenedWhen": "15 Apr 2026, 12:02", "confidence": "Verified official source update", - "confidenceScore": 0.76, - "summary": "A Bill to make provision about anti-social behaviour, offensive weapons, offences against people (including sexual offences), property offences, the criminal exploitation of persons, sex offenders, stalking and public order; to make provision about powers of t", - "aiSummary": "Parliament - Public Bills RSS has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "A Bill to make provision about anti-social behaviour, offensive weapons, offences against people (including sexual offences), property offences, the criminal exploitation of persons, sex offenders, stalking and public order; to make provision about powers of the police, the border force and other similar persons; to make provision about confiscation; to make provision about the police; to make provision about terrorism and national security, and about international agreements relating to crime; to make provision about the criminal liability of bodies; and for connected purposes.", + "confidenceScore": 0.84, + "summary": "This year marks ten years since the Office of Financial Sanctions Implementation (OFSI) was established.   Over the last ten years, OFSI has built stronger capability and confidence, enhancing licensing, enforcement and intelligence, d", + "aiSummary": "Office of Financial Sanctions Implementation (OFSI) a Blog has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", + "sourceExtract": "This year marks ten years since the Office of Financial Sanctions Implementation (OFSI) was established.   Over the last ten years, OFSI has built stronger capability and confidence, enhancing licensing, enforcement and intelligence, deepening international partnerships, and supporting firms to navigate increasingly complex sanctions …", "peopleInvolved": [], - "source": "Parliament - Public Bills RSS", - "sourceUrl": "https://bills.parliament.uk/bills/3938", + "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "sourceUrl": "https://ofsi.blog.gov.uk/2026/04/15/ofsi-strategy-2026-29/", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "time": "Source date unconfirmed", + "laneReason": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", + "queueBucket": "sanctions", + "time": "15 Apr 2026, 12:02", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": null, - "keywordHits": [ - "terrorism" - ], - "terrorismHits": [ - "terrorism" - ], - "eventType": "oversight_update", + "publishedAt": "2026-04-15T11:02:35.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.2, - "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "priorityScore": -1.9, + "freshnessBucket": 0, + "freshUntil": "2026-04-25T11:02:35.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-a3d6ee7188e5d198", - "source": "Parliament - Public Bills RSS", - "sourceUrl": "https://bills.parliament.uk/bills/3938", + "fusedIncidentId": "fusion-6e40ebbbf721ca80", + "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "sourceUrl": "https://ofsi.blog.gov.uk/2026/04/15/ofsi-strategy-2026-29/", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": null, + "publishedAt": "2026-04-15T11:02:35.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-a3d6ee7188e5d198" + "isDuplicateOf": "fusion-6e40ebbbf721ca80" }, { - "id": "europol-news-rss-0", - "fusedIncidentId": "fusion-3baa21b198f276f4", - "title": "Up To EUR 50 000 For A Passage To The UK: 19 Suspected Migrant Smugglers Arrested", + "id": "uk-ofsi-blog-1", + "fusedIncidentId": "fusion-0ea411ece6694bdb", + "title": "Call For Evidence On Ownership And Control In Financial Sanctions Regulations", "location": "United Kingdom", - "region": "eu", - "lane": "context", - "severity": "moderate", + "region": "uk", + "lane": "sanctions", + "severity": "elevated", "status": "Update", - "actor": "Europol a Newsroom (RSS)", - "subject": "Europol a Newsroom (RSS)", - "happenedWhen": "Source date unconfirmed", + "actor": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "subject": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "happenedWhen": "13 Apr 2026, 16:59", "confidence": "Verified official source update", - "confidenceScore": 0.76, - "summary": "On 30 March 2025, Europol supported an action day against criminal networks smuggling migrants from Vietnam to the European Union and the United Kingdom. Law enforcement authorities across Europe have intensified their efforts to disrupt migrant smuggling netw", - "aiSummary": "Europol a Newsroom (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "On 30 March 2025, Europol supported an action day against criminal networks smuggling migrants from Vietnam to the European Union and the United Kingdom. Law enforcement authorities across Europe have intensified their efforts to disrupt migrant smuggling networks as part of a coordinated whole-route approach addressing every stage of the criminal business model.", + "confidenceScore": 0.84, + "summary": "OFSI has launched a call for evidence to seek industry’s views on how UK financial sanctions regulations on ownership and control are applied in practice, including how firms implement the regulations and where they face challenges.   The ownership and co", + "aiSummary": "Office of Financial Sanctions Implementation (OFSI) a Blog has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", + "sourceExtract": "OFSI has launched a call for evidence to seek industry’s views on how UK financial sanctions regulations on ownership and control are applied in practice, including how firms implement the regulations and where they face challenges.   The ownership and control …", "peopleInvolved": [], - "source": "Europol a Newsroom (RSS)", - "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/eur-50-000-for-passage-to-uk-19-suspected-migrant-smugglers-arrested", + "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "sourceUrl": "https://ofsi.blog.gov.uk/2026/02/16/call-for-evidence-on-ownership-and-control-in-financial-sanctions-regulations/", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "time": "Source date unconfirmed", + "laneReason": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", + "queueBucket": "sanctions", + "time": "13 Apr 2026, 16:59", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": null, - "keywordHits": [ - "arrested" - ], + "publishedAt": "2026-04-13T15:59:44.000Z", + "keywordHits": [], "terrorismHits": [], - "eventType": "context_update", + "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.2, - "freshnessBucket": 1, - "freshUntil": "2026-04-10T09:11:31.394Z", + "priorityScore": -1.9, + "freshnessBucket": 0, + "freshUntil": "2026-04-23T15:59:44.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-3baa21b198f276f4", - "source": "Europol a Newsroom (RSS)", - "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/eur-50-000-for-passage-to-uk-19-suspected-migrant-smugglers-arrested", + "fusedIncidentId": "fusion-0ea411ece6694bdb", + "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "sourceUrl": "https://ofsi.blog.gov.uk/2026/02/16/call-for-evidence-on-ownership-and-control-in-financial-sanctions-regulations/", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": null, + "publishedAt": "2026-04-13T15:59:44.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-3baa21b198f276f4" + "isDuplicateOf": "fusion-0ea411ece6694bdb" }, { - "id": "europol-news-rss-3", - "fusedIncidentId": "fusion-b837d7a4dac2cb7e", - "title": "Small Boats Supply Chain Disrupted: 21 Arrested For Supplying Channel Smugglers With Nautical Equipment", - "location": "United Kingdom", - "region": "eu", - "lane": "context", + "id": "gnet-research-2", + "fusedIncidentId": "fusion-2f2e7d1797f06378", + "title": "The Resurgence Of The Base In Europe: The Spanish Cell And A Transnational Accelerationist Network", + "location": "United States", + "region": "uk", + "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "Europol a Newsroom (RSS)", - "subject": "Europol a Newsroom (RSS)", - "happenedWhen": "Source date unconfirmed", - "confidence": "Verified official source update", - "confidenceScore": 0.76, - "summary": "A joint investigation conducted under the framework of a Europol task force resulted in a significant disruption of the migrant smuggling supply chain serving criminal networks active along the English Channel. This operation is the outcome of close cooperatio", - "aiSummary": "Europol a Newsroom (RSS) has published corroborating or adjacent reporting. The value here is supporting detail, follow-on facts, and wider situation context rather than a primary live trigger.", - "sourceExtract": "A joint investigation conducted under the framework of a Europol task force resulted in a significant disruption of the migrant smuggling supply chain serving criminal networks active along the English Channel. This operation is the outcome of close cooperation between law enforcement and judicial authorities from Belgium, France, Germany, the Netherlands, and the United Kingdom, with support from Eurojust.", - "peopleInvolved": [], - "source": "Europol a Newsroom (RSS)", - "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/small-boats-supply-chain-disrupted-21-arrested-for-supplying-channel-smugglers-nautical-equipment", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "actor": "Global Network on Extremism & Technology (GNET) a Main Feed", + "subject": "Global Network on Extremism & Technology (GNET) a Main Feed", + "happenedWhen": "13 Apr 2026, 11:25", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "Introduction In December 2025, Spanish authorities dismantled a cell linked to The Base, an accelerationist white supremacist group designated as a terrorist organisation in several countries. Between 2019 and 2021, The Base gained widespread attention followi", + "aiSummary": "Global Network on Extremism & Technology (GNET) a Main Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "Introduction In December 2025, Spanish authorities dismantled a cell linked to The Base, an accelerationist white supremacist group designated as a terrorist organisation in several countries. Between 2019 and 2021, The Base gained widespread attention following a series of high-profile incidents and arrests across the United States and Europe, which led to a period of decline. However, since 2023, the […]", + "peopleInvolved": [], + "source": "Global Network on Extremism & Technology (GNET) a Main Feed", + "sourceUrl": "https://gnet-research.org/2026/04/13/the-resurgence-of-the-base-in-europe-the-spanish-cell-and-a-transnational-accelerationist-network/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", "incidentTrack": "", - "laneReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "queueReason": "Corroborating or adjacent source kept out of the live trigger lane.", - "time": "Source date unconfirmed", - "lat": 54.5, - "lng": -2.5, + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "queueBucket": "prevention", + "time": "13 Apr 2026, 11:25", + "lat": 39.8283, + "lng": -98.5795, "major": false, - "publishedAt": null, - "keywordHits": [ - "arrested" + "publishedAt": "2026-04-13T10:25:13.000Z", + "keywordHits": [], + "terrorismHits": [ + "terrorist" ], - "terrorismHits": [], - "eventType": "context_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 2.2, - "freshnessBucket": 1, - "freshUntil": "2026-04-10T09:11:31.394Z", + "eventType": "prevention_update", + "geoPrecision": "region", + "isOfficial": false, + "priorityScore": -2.3, + "freshnessBucket": 0, + "freshUntil": "2026-04-21T10:25:13.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-b837d7a4dac2cb7e", - "source": "Europol a Newsroom (RSS)", - "sourceUrl": "https://www.europol.europa.eu/media-press/newsroom/news/small-boats-supply-chain-disrupted-21-arrested-for-supplying-channel-smugglers-nautical-equipment", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" + "fusedIncidentId": "fusion-2f2e7d1797f06378", + "source": "Global Network on Extremism & Technology (GNET) a Main Feed", + "sourceUrl": "https://gnet-research.org/2026/04/13/the-resurgence-of-the-base-in-europe-the-spanish-cell-and-a-transnational-accelerationist-network/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "publishedAt": "2026-04-13T10:25:13.000Z", + "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-b837d7a4dac2cb7e" + "isDuplicateOf": "fusion-2f2e7d1797f06378" }, { - "id": "gov-uk-prevent-strategy-3", - "fusedIncidentId": "fusion-4149c5459ed69f90", - "title": "Counter-Terrorism And Security Act 2015", + "id": "uk-ofsi-blog-1", + "fusedIncidentId": "fusion-88e480db5fcdf290", + "title": "OFSI’S 10 Year Anniversary – Reflections From Giles Thomson, Director Of OFSI", "location": "United Kingdom", "region": "uk", - "lane": "prevention", - "severity": "moderate", + "lane": "sanctions", + "severity": "elevated", "status": "Update", - "actor": "UK Home Office - Prevent duty guidance", - "subject": "UK Home Office - Prevent duty guidance", - "happenedWhen": "Source date unconfirmed", + "actor": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "subject": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "happenedWhen": "31 Mar 2026, 11:19", "confidence": "Verified official source update", - "confidenceScore": 0.76, - "summary": "An Act to make provision in relation to terrorism; to make provision about retention of communications data, about information, authority to carry and security in relation to air, sea and rail transport and about reviews by the Special Immigration Appeals Comm", - "aiSummary": "UK Home Office - Prevent duty guidance has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "An Act to make provision in relation to terrorism; to make provision about retention of communications data, about information, authority to carry and security in relation to air, sea and rail transport and about reviews by the Special Immigration Appeals Commission against refusals to issue certificates of naturalisation; and for connected purposes.", + "confidenceScore": 0.84, + "summary": "Ten years ago, the Office of Financial Sanctions Implementation (OFSI) was established to ensure that the United Kingdom’s financial sanctions are clearly understood, effectively implemented and robustly enforced. Over the past decade, financial sanctions have", + "aiSummary": "Office of Financial Sanctions Implementation (OFSI) a Blog has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", + "sourceExtract": "Ten years ago, the Office of Financial Sanctions Implementation (OFSI) was established to ensure that the United Kingdom’s financial sanctions are clearly understood, effectively implemented and robustly enforced. Over the past decade, financial sanctions have become an increasingly important tool in furthering the UK’s foreign policy, national security and economic aims. Financial sanctions …", "peopleInvolved": [], - "source": "UK Home Office - Prevent duty guidance", - "sourceUrl": "https://www.legislation.gov.uk/ukpga/2015/6/section/29", + "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "sourceUrl": "https://ofsi.blog.gov.uk/2026/03/31/ofsis-10-year-anniversary-reflections-from-giles-thomson-director-of-ofsi/", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "time": "Source date unconfirmed", + "laneReason": "Sanctions change with terrorism relevance.", + "queueReason": "Sanctions change with terrorism relevance.", + "queueBucket": "sanctions", + "time": "31 Mar 2026, 11:19", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": null, - "keywordHits": [ - "terrorism" - ], - "terrorismHits": [ - "terrorism" - ], - "eventType": "prevention_update", + "publishedAt": "2026-03-31T10:19:24.000Z", + "keywordHits": [], + "terrorismHits": [], + "eventType": "sanctions_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.2, - "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "priorityScore": -3.9, + "freshnessBucket": 0, + "freshUntil": "2026-04-10T10:19:24.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-4149c5459ed69f90", - "source": "GOV.UK a Prevent Duty Guidance (Collection)", - "sourceUrl": "https://www.legislation.gov.uk/ukpga/2015/6/section/29", + "fusedIncidentId": "fusion-88e480db5fcdf290", + "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", + "sourceUrl": "https://ofsi.blog.gov.uk/2026/03/31/ofsis-10-year-anniversary-reflections-from-giles-thomson-director-of-ofsi/", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": null, + "publishedAt": "2026-03-31T10:19:24.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-4149c5459ed69f90" + "isDuplicateOf": "fusion-88e480db5fcdf290" }, { - "id": "sapo-se-english-0", - "fusedIncidentId": "fusion-077a74df844621a3", - "title": "About The Swedish Security Service", + "id": "eurojust-publications-0", + "fusedIncidentId": "fusion-ad5d553009dd02a4", + "title": "Eurojust Meeting On Counter-Terrorism 26-27 November 2025 - Summary Of Discussions", "location": "Europe", - "region": "europe", - "lane": "prevention", + "region": "eu", + "lane": "oversight", "severity": "moderate", "status": "Update", - "actor": "Swedish Security Service English news", - "subject": "Swedish Security Service English news", - "happenedWhen": "Source date unconfirmed", + "actor": "Eurojust a Publications (RSS)", + "subject": "Eurojust a Publications (RSS)", + "happenedWhen": "09 Apr 2026, 13:00", "confidence": "Verified official source update", - "confidenceScore": 0.76, - "summary": "The Swedish Security Service prevents and detects offences against national security, fights terrorism and protects the central Government. The purpose of our activities is to protect the democratic system, the rights and freedoms of our citizens and national ", - "aiSummary": "Swedish Security Service English news has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "The Swedish Security Service prevents and detects offences against national security, fights terrorism and protects the central Government. The purpose of our activities is to protect the democratic system, the rights and freedoms of our citizens and national security.", + "confidenceScore": 0.86, + "summary": "On 26 and 27 November 2025, Eurojust hosted its annual counter-terrorism meeting, which gathered specialised prosecutors and other experts from 33 countries, as well as representatives from EU institutions. Participants discussed best practices and the latest ", + "aiSummary": "Eurojust a Publications (RSS) has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", + "sourceExtract": "On 26 and 27 November 2025, Eurojust hosted its annual counter-terrorism meeting, which gathered specialised prosecutors and other experts from 33 countries, as well as representatives from EU institutions. Participants discussed best practices and the latest challenges in combatting terrorist threats, including the definition of terrorism, and the emerging trends shaping the threat landscape. Participants shared their experiences and lessons learned relating to the definition of victims of terrorism, cooperation with online service providers to obtain electronic evidence in counter-terrorism…", "peopleInvolved": [], - "source": "Swedish Security Service English news", - "sourceUrl": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/about-the-swedish-security-service.html", + "source": "Eurojust a Publications (RSS)", + "sourceUrl": "https://www.eurojust.europa.eu/publication/eurojust-meeting-counter-terrorism-26-27-november-2025-summary-discussions", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "time": "Source date unconfirmed", - "lat": 54, - "lng": 15, + "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueBucket": "oversight", + "time": "09 Apr 2026, 13:00", + "lat": 50, + "lng": 10, "major": false, - "publishedAt": null, + "publishedAt": "2026-04-09T12:00:00.000Z", "keywordHits": [ - "terrorism" + "terrorism", + "threat" ], "terrorismHits": [ - "terrorism" + "terrorism", + "terrorist" ], - "eventType": "prevention_update", + "eventType": "oversight_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": 2.2, - "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "priorityScore": -5.2, + "freshnessBucket": 0, + "freshUntil": "2026-04-17T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-077a74df844621a3", - "source": "Swedish Security Service English news", - "sourceUrl": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/about-the-swedish-security-service.html", + "fusedIncidentId": "fusion-ad5d553009dd02a4", + "source": "Eurojust a Publications (RSS)", + "sourceUrl": "https://www.eurojust.europa.eu/publication/eurojust-meeting-counter-terrorism-26-27-november-2025-summary-discussions", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": null, + "publishedAt": "2026-04-09T12:00:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-077a74df844621a3" + "isDuplicateOf": "fusion-ad5d553009dd02a4" }, { - "id": "sapo-se-english-3", - "fusedIncidentId": "fusion-971df53ad3fa6ad8", - "title": "National Centre For Terrorist Threat Assessment", - "location": "Europe", - "region": "europe", + "id": "gnet-research-3", + "fusedIncidentId": "fusion-f289bcaeba8fd554", + "title": "Jedag Jedug Jihadists: How Tik. Tok Edits Turn Glorification Of Jemaah Islamiyah Figures Into Entertainment", + "location": "Indonesia", + "region": "uk", "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "Swedish Security Service English news", - "subject": "Swedish Security Service English news", - "happenedWhen": "Source date unconfirmed", - "confidence": "Verified official source update", - "confidenceScore": 0.76, - "summary": "National Centre for Terrorist Threat Assessment", - "aiSummary": "Swedish Security Service English news has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "National Centre for Terrorist Threat Assessment", + "actor": "Global Network on Extremism & Technology (GNET) a Main Feed", + "subject": "Global Network on Extremism & Technology (GNET) a Main Feed", + "happenedWhen": "15 Apr 2026, 00:42", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "On Indonesian Tik. Tok, figures associated with past Jemaah Islamiyah (JI) terrorist attacks are quietly reentering public view, not through active news coverage or historical documentaries, but through short, stylised video edits designed for entertainment. I", + "aiSummary": "Global Network on Extremism & Technology (GNET) a Main Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "On Indonesian Tik. Tok, figures associated with past Jemaah Islamiyah (JI) terrorist attacks are quietly reentering public view, not through active news coverage or historical documentaries, but through short, stylised video edits designed for entertainment. Indonesia offers a particularly revealing case study for observing this trend, given its Tik. Tok user base of roughly 100 million adult users as of early 2025 […]", "peopleInvolved": [], - "source": "Swedish Security Service English news", - "sourceUrl": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/what-we-do/counter-terrorism/national-centre-for-terrorist-threat-assessment.html", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "source": "Global Network on Extremism & Technology (GNET) a Main Feed", + "sourceUrl": "https://gnet-research.org/2026/04/15/jedag-jedug-jihadists-how-tiktok-edits-turn-glorification-of-jemaah-islamiyah-figures-into-entertainment/", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Prevention, radicalisation, or analytical context source.", "queueReason": "Prevention, radicalisation, or analytical context source.", - "time": "Source date unconfirmed", - "lat": 54, - "lng": 15, + "queueBucket": "prevention", + "time": "15 Apr 2026, 00:42", + "lat": -0.7893, + "lng": 113.9213, "major": false, - "publishedAt": null, + "publishedAt": "2026-04-14T23:42:14.000Z", "keywordHits": [ - "threat" + "attacks" ], "terrorismHits": [ "terrorist" ], "eventType": "prevention_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": 2.2, - "freshnessBucket": 1, - "freshUntil": "2026-04-14T09:11:31.394Z", + "geoPrecision": "region", + "isOfficial": false, + "priorityScore": -5.7, + "freshnessBucket": 0, + "freshUntil": "2026-04-22T23:42:14.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-971df53ad3fa6ad8", - "source": "Swedish Security Service English news", - "sourceUrl": "https://www.sakerhetspolisen.se/ovriga-sidor/other-languages/english-engelska/what-we-do/counter-terrorism/national-centre-for-terrorist-threat-assessment.html", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": null, - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-971df53ad3fa6ad8" - }, - { - "id": "gnet-research-2", - "fusedIncidentId": "fusion-d4ce1d4b7d0d4389", - "title": "Beyond The Clan: Identity Formation, Influence, And Extremist Milieux In Online Gaming-Adjacent Spaces", - "location": "United Kingdom", - "region": "uk", - "lane": "prevention", - "severity": "moderate", - "status": "Update", - "actor": "Global Network on Extremism & Technology (GNET) a Main Feed", - "subject": "Global Network on Extremism & Technology (GNET) a Main Feed", - "happenedWhen": "17 Apr 2026, 00:46", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "Over the past two decades, gaming environments have become increasingly social and massified. Multiplayer games allow players to cooperate, compete, and communicate in real time, while adjacent platforms (such as Discord or Twitch) extend interaction beyond ga", - "aiSummary": "Global Network on Extremism & Technology (GNET) a Main Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "Over the past two decades, gaming environments have become increasingly social and massified. Multiplayer games allow players to cooperate, compete, and communicate in real time, while adjacent platforms (such as Discord or Twitch) extend interaction beyond gameplay itself. Scholars studying gaming cultures have long emphasised the importance of these spaces for community building and identity construction (see, for example Gray, […]", - "peopleInvolved": [], - "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/17/beyond-the-clan-identity-formation-influence-and-extremist-milieux-in-online-gaming-adjacent-spaces/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "queueBucket": "prevention", - "time": "17 Apr 2026, 00:46", - "lat": 54.5, - "lng": -2.5, - "major": false, - "publishedAt": "2026-04-16T23:46:13.000Z", - "keywordHits": [ - "extremist" - ], - "terrorismHits": [ - "extremist" - ], - "eventType": "prevention_update", - "geoPrecision": "country", - "isOfficial": false, - "priorityScore": -1.7, - "freshnessBucket": 0, - "freshUntil": "2026-04-24T23:46:13.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-d4ce1d4b7d0d4389", + "fusedIncidentId": "fusion-f289bcaeba8fd554", "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/17/beyond-the-clan-identity-formation-influence-and-extremist-milieux-in-online-gaming-adjacent-spaces/", + "sourceUrl": "https://gnet-research.org/2026/04/15/jedag-jedug-jihadists-how-tiktok-edits-turn-glorification-of-jemaah-islamiyah-figures-into-entertainment/", "sourceTier": "research", "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-16T23:46:13.000Z", + "publishedAt": "2026-04-14T23:42:14.000Z", "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-d4ce1d4b7d0d4389" + "isDuplicateOf": "fusion-f289bcaeba8fd554" }, { - "id": "uk-ofsi-blog-0", - "fusedIncidentId": "fusion-6e40ebbbf721ca80", - "title": "OFSI Strategy 2026-29", - "location": "United Kingdom", - "region": "uk", - "lane": "sanctions", - "severity": "elevated", + "id": "fixture-atom-oversight-0", + "fusedIncidentId": "fusion-b4a9eb5890206d91", + "title": "Oversight Committee Schedules Counter-Terror Review Hearing", + "location": "Europe", + "region": "europe", + "lane": "oversight", + "severity": "moderate", "status": "Update", - "actor": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "subject": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "happenedWhen": "15 Apr 2026, 12:02", + "actor": "Fixture Oversight Feed", + "subject": "Fixture Oversight Feed", + "happenedWhen": "04 Apr 2026, 11:10", "confidence": "Verified official source update", "confidenceScore": 0.84, - "summary": "This year marks ten years since the Office of Financial Sanctions Implementation (OFSI) was established.   Over the last ten years, OFSI has built stronger capability and confidence, enhancing licensing, enforcement and intelligence, d", - "aiSummary": "Office of Financial Sanctions Implementation (OFSI) a Blog has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", - "sourceExtract": "This year marks ten years since the Office of Financial Sanctions Implementation (OFSI) was established.   Over the last ten years, OFSI has built stronger capability and confidence, enhancing licensing, enforcement and intelligence, deepening international partnerships, and supporting firms to navigate increasingly complex sanctions …", + "summary": "Parliamentary committee confirms an oversight hearing on prevention strategy.", + "aiSummary": "Fixture Oversight Feed has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", + "sourceExtract": "Parliamentary committee confirms an oversight hearing on prevention strategy.", "peopleInvolved": [], - "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "sourceUrl": "https://ofsi.blog.gov.uk/2026/04/15/ofsi-strategy-2026-29/", + "source": "Fixture Oversight Feed", + "sourceUrl": "https://fixtures.albertalert.local/oversight/1", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", - "queueBucket": "sanctions", - "time": "15 Apr 2026, 12:02", - "lat": 54.5, - "lng": -2.5, + "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueBucket": "oversight", + "time": "04 Apr 2026, 11:10", + "lat": 50, + "lng": 10, "major": false, - "publishedAt": "2026-04-15T11:02:35.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "sanctions_update", + "publishedAt": "2026-04-04T10:10:00.000Z", + "keywordHits": [ + "terror" + ], + "terrorismHits": [ + "terror", + "counter-terror" + ], + "eventType": "oversight_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": -1.9, + "priorityScore": -5.8, "freshnessBucket": 0, - "freshUntil": "2026-04-25T11:02:35.000Z", + "freshUntil": "2026-04-12T10:10:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-6e40ebbbf721ca80", - "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "sourceUrl": "https://ofsi.blog.gov.uk/2026/04/15/ofsi-strategy-2026-29/", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-04-15T11:02:35.000Z", - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-6e40ebbbf721ca80" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null }, { - "id": "uk-ofsi-blog-1", - "fusedIncidentId": "fusion-0ea411ece6694bdb", - "title": "Call For Evidence On Ownership And Control In Financial Sanctions Regulations", + "id": "uk-ncsc-news-4", + "fusedIncidentId": "fusion-a4c8d412564d7890", + "title": "NCSC Warns Of Messaging App Targeting", "location": "United Kingdom", "region": "uk", - "lane": "sanctions", - "severity": "elevated", + "lane": "oversight", + "severity": "moderate", "status": "Update", - "actor": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "subject": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "happenedWhen": "13 Apr 2026, 16:59", + "actor": "National Cyber Security Centre (UK) a News", + "subject": "National Cyber Security Centre (UK) a News", + "happenedWhen": "31 Mar 2026, 13:00", "confidence": "Verified official source update", "confidenceScore": 0.84, - "summary": "OFSI has launched a call for evidence to seek industry’s views on how UK financial sanctions regulations on ownership and control are applied in practice, including how firms implement the regulations and where they face challenges.   The ownership and co", - "aiSummary": "Office of Financial Sanctions Implementation (OFSI) a Blog has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", - "sourceExtract": "OFSI has launched a call for evidence to seek industry’s views on how UK financial sanctions regulations on ownership and control are applied in practice, including how firms implement the regulations and where they face challenges.   The ownership and control …", + "summary": "The NCSC has issued actions for individuals at risk of targeted attacks against messaging apps.", + "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", + "sourceExtract": "The NCSC has issued actions for individuals at risk of targeted attacks against messaging apps.", "peopleInvolved": [], - "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "sourceUrl": "https://ofsi.blog.gov.uk/2026/02/16/call-for-evidence-on-ownership-and-control-in-financial-sanctions-regulations/", + "source": "National Cyber Security Centre (UK) a News", + "sourceUrl": "https://www.ncsc.gov.uk/news/ncsc-warns-of-messaging-app-targeting", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", - "queueBucket": "sanctions", - "time": "13 Apr 2026, 16:59", + "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", + "queueBucket": "oversight", + "time": "31 Mar 2026, 13:00", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-04-13T15:59:44.000Z", - "keywordHits": [], + "publishedAt": "2026-03-31T12:00:00.000Z", + "keywordHits": [ + "attacks" + ], "terrorismHits": [], - "eventType": "sanctions_update", + "eventType": "oversight_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": -1.9, + "priorityScore": -5.8, "freshnessBucket": 0, - "freshUntil": "2026-04-23T15:59:44.000Z", + "freshUntil": "2026-04-08T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-0ea411ece6694bdb", - "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "sourceUrl": "https://ofsi.blog.gov.uk/2026/02/16/call-for-evidence-on-ownership-and-control-in-financial-sanctions-regulations/", + "fusedIncidentId": "fusion-a4c8d412564d7890", + "source": "National Cyber Security Centre (UK) a News", + "sourceUrl": "https://www.ncsc.gov.uk/news/ncsc-warns-of-messaging-app-targeting", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-04-13T15:59:44.000Z", + "publishedAt": "2026-03-31T12:00:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-0ea411ece6694bdb" + "isDuplicateOf": "fusion-a4c8d412564d7890" }, { - "id": "gnet-research-2", - "fusedIncidentId": "fusion-2f2e7d1797f06378", - "title": "The Resurgence Of The Base In Europe: The Spanish Cell And A Transnational Accelerationist Network", - "location": "United States", + "id": "gnet-research-3", + "fusedIncidentId": "fusion-b96e09025d9b32c6", + "title": "Francoism Online: Neo-Fascism, Memes, And Historical Revisionism In Spain", + "location": "Spain", "region": "uk", "lane": "prevention", "severity": "moderate", "status": "Update", "actor": "Global Network on Extremism & Technology (GNET) a Main Feed", "subject": "Global Network on Extremism & Technology (GNET) a Main Feed", - "happenedWhen": "13 Apr 2026, 11:25", + "happenedWhen": "09 Apr 2026, 12:05", "confidence": "Research or analytical source", "confidenceScore": 0.68, - "summary": "Introduction In December 2025, Spanish authorities dismantled a cell linked to The Base, an accelerationist white supremacist group designated as a terrorist organisation in several countries. Between 2019 and 2021, The Base gained widespread attention followi", + "summary": "In Spain, a recent study indicates that young men are showing an inclination toward far-right ideologies, often accompanied by an attraction to the period of Francisco Franco’s dictatorship, established following the Spanish Civil War (1936–1939) and lasting u", "aiSummary": "Global Network on Extremism & Technology (GNET) a Main Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "Introduction In December 2025, Spanish authorities dismantled a cell linked to The Base, an accelerationist white supremacist group designated as a terrorist organisation in several countries. Between 2019 and 2021, The Base gained widespread attention following a series of high-profile incidents and arrests across the United States and Europe, which led to a period of decline. However, since 2023, the […]", + "sourceExtract": "In Spain, a recent study indicates that young men are showing an inclination toward far-right ideologies, often accompanied by an attraction to the period of Francisco Franco’s dictatorship, established following the Spanish Civil War (1936–1939) and lasting until 1975. This admiration is increasingly visible on social media, where content glorifying Franco has gained popularity, often relying on disinformation about different […]", "peopleInvolved": [], "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/13/the-resurgence-of-the-base-in-europe-the-spanish-cell-and-a-transnational-accelerationist-network/", + "sourceUrl": "https://gnet-research.org/2026/04/09/francoism-online-neo-fascism-memes-and-historical-revisionism-in-spain/", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Prevention, radicalisation, or analytical context source.", "queueReason": "Prevention, radicalisation, or analytical context source.", "queueBucket": "prevention", - "time": "13 Apr 2026, 11:25", - "lat": 39.8283, - "lng": -98.5795, + "time": "09 Apr 2026, 12:05", + "lat": 40.4637, + "lng": -3.7492, "major": false, - "publishedAt": "2026-04-13T10:25:13.000Z", + "publishedAt": "2026-04-09T11:05:48.000Z", "keywordHits": [], - "terrorismHits": [ - "terrorist" - ], + "terrorismHits": [], "eventType": "prevention_update", "geoPrecision": "region", "isOfficial": false, - "priorityScore": -2.3, + "priorityScore": -6.3, "freshnessBucket": 0, - "freshUntil": "2026-04-21T10:25:13.000Z", + "freshUntil": "2026-04-17T11:05:48.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-2f2e7d1797f06378", + "fusedIncidentId": "fusion-b96e09025d9b32c6", "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/13/the-resurgence-of-the-base-in-europe-the-spanish-cell-and-a-transnational-accelerationist-network/", + "sourceUrl": "https://gnet-research.org/2026/04/09/francoism-online-neo-fascism-memes-and-historical-revisionism-in-spain/", "sourceTier": "research", "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-13T10:25:13.000Z", + "publishedAt": "2026-04-09T11:05:48.000Z", "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-2f2e7d1797f06378" + "isDuplicateOf": "fusion-b96e09025d9b32c6" }, { - "id": "uk-ncsc-news-0", - "fusedIncidentId": "fusion-6de206d78b0d3e71", - "title": "UK Exposes Russian Military Intelligence Hijacking Vulnerable Routers For Cyber Attacks", - "location": "Russia", + "id": "uk-ncsc-news-4", + "fusedIncidentId": "fusion-4b8334e1ce46e542", + "title": "Vulnerability Affecting F5 BIG-IP APM", + "location": "United Kingdom", "region": "uk", "lane": "oversight", "severity": "moderate", "status": "Update", "actor": "National Cyber Security Centre (UK) a News", "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "07 Apr 2026, 13:00", + "happenedWhen": "30 Mar 2026, 13:00", "confidence": "Verified official source update", - "confidenceScore": 0.86, - "summary": "New advisory warns cyber threat group APT28 have exploited vulnerable edge devices to support malicious operations.", + "confidenceScore": 0.84, + "summary": "The NCSC is encouraging UK organisations to mitigate an unauthenticated remote code execution vulnerability affecting F5 BIG-IP Access Policy Manager.", "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "New advisory warns cyber threat group APT28 have exploited vulnerable edge devices to support malicious operations.", + "sourceExtract": "The NCSC is encouraging UK organisations to mitigate an unauthenticated remote code execution vulnerability affecting F5 BIG-IP Access Policy Manager.", "peopleInvolved": [], "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/uk-exposes-russian-military-intelligence-hijacking-vulnerable-routers-for-cyber-attacks", + "sourceUrl": "https://www.ncsc.gov.uk/news/vulnerability-affecting-f5-big-ip-apm", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", "queueBucket": "oversight", - "time": "07 Apr 2026, 13:00", - "lat": 61.524, - "lng": 105.3188, + "time": "30 Mar 2026, 13:00", + "lat": 54.5, + "lng": -2.5, "major": false, - "publishedAt": "2026-04-07T12:00:00.000Z", - "keywordHits": [ - "attacks", - "threat" - ], + "publishedAt": "2026-03-30T12:00:00.000Z", + "keywordHits": [], "terrorismHits": [], "eventType": "oversight_update", - "geoPrecision": "region", + "geoPrecision": "country", "isOfficial": true, - "priorityScore": -3.2, + "priorityScore": -6.4, "freshnessBucket": 0, - "freshUntil": "2026-04-15T12:00:00.000Z", + "freshUntil": "2026-04-07T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-6de206d78b0d3e71", + "fusedIncidentId": "fusion-4b8334e1ce46e542", "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/uk-exposes-russian-military-intelligence-hijacking-vulnerable-routers-for-cyber-attacks", + "sourceUrl": "https://www.ncsc.gov.uk/news/vulnerability-affecting-f5-big-ip-apm", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-04-07T12:00:00.000Z", + "publishedAt": "2026-03-30T12:00:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-6de206d78b0d3e71" + "isDuplicateOf": "fusion-4b8334e1ce46e542" }, { - "id": "uk-ncsc-news-1", - "fusedIncidentId": "fusion-df9e430f15ecb473", - "title": "APT28 Exploit Routers To Enable DNS Hijacking Operations", - "location": "Russia", + "id": "uk-ncsc-news-4", + "fusedIncidentId": "fusion-e4ae87f9ebe0b16e", + "title": "Vulnerabilities Affecting Citrix Net. Scaler ADC And Citrix Net. Scaler Gateway", + "location": "United Kingdom", "region": "uk", "lane": "oversight", "severity": "moderate", "status": "Update", "actor": "National Cyber Security Centre (UK) a News", "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "07 Apr 2026, 13:00", + "happenedWhen": "25 Mar 2026, 12:00", "confidence": "Verified official source update", "confidenceScore": 0.84, - "summary": "Russian cyber actor APT28 exploit vulnerable routers to hijack DNS, enabling adversary‑in‑the‑middle attacks and theft of passwords and authentication tokens.", + "summary": "UK organisations encouraged to take immediate action to mitigate two recently disclosed vulnerabilities affecting Citrix Net. Scaler ADC and Citrix Net. Scaler Gateway.", "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "Russian cyber actor APT28 exploit vulnerable routers to hijack DNS, enabling adversary‑in‑the‑middle attacks and theft of passwords and authentication tokens.", + "sourceExtract": "UK organisations encouraged to take immediate action to mitigate two recently disclosed vulnerabilities affecting Citrix Net. Scaler ADC and Citrix Net. Scaler Gateway.", "peopleInvolved": [], "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/apt28-exploit-routers-to-enable-dns-hijacking-operations", + "sourceUrl": "https://www.ncsc.gov.uk/news/vulnerabilities-affecting-citrix-netscaler-adc-gateway", "sourceTier": "context", "reliabilityProfile": "official_context", "incidentTrack": "", "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", "queueBucket": "oversight", - "time": "07 Apr 2026, 13:00", - "lat": 61.524, - "lng": 105.3188, - "major": false, - "publishedAt": "2026-04-07T12:00:00.000Z", - "keywordHits": [ - "attacks" - ], - "terrorismHits": [], - "eventType": "oversight_update", - "geoPrecision": "region", - "isOfficial": true, - "priorityScore": -3.8, - "freshnessBucket": 0, - "freshUntil": "2026-04-15T12:00:00.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-df9e430f15ecb473", - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/apt28-exploit-routers-to-enable-dns-hijacking-operations", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-04-07T12:00:00.000Z", - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-df9e430f15ecb473" - }, - { - "id": "uk-ofsi-blog-1", - "fusedIncidentId": "fusion-88e480db5fcdf290", - "title": "OFSI’S 10 Year Anniversary – Reflections From Giles Thomson, Director Of OFSI", - "location": "United Kingdom", - "region": "uk", - "lane": "sanctions", - "severity": "elevated", - "status": "Update", - "actor": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "subject": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "happenedWhen": "31 Mar 2026, 11:19", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "Ten years ago, the Office of Financial Sanctions Implementation (OFSI) was established to ensure that the United Kingdom’s financial sanctions are clearly understood, effectively implemented and robustly enforced. Over the past decade, financial sanctions have", - "aiSummary": "Office of Financial Sanctions Implementation (OFSI) a Blog has published a sanctions-related update. The value here is legal and entity-resolution context, including designations, aliases, listing changes, and notice-level movement.", - "sourceExtract": "Ten years ago, the Office of Financial Sanctions Implementation (OFSI) was established to ensure that the United Kingdom’s financial sanctions are clearly understood, effectively implemented and robustly enforced. Over the past decade, financial sanctions have become an increasingly important tool in furthering the UK’s foreign policy, national security and economic aims. Financial sanctions …", - "peopleInvolved": [], - "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "sourceUrl": "https://ofsi.blog.gov.uk/2026/03/31/ofsis-10-year-anniversary-reflections-from-giles-thomson-director-of-ofsi/", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "incidentTrack": "", - "laneReason": "Sanctions change with terrorism relevance.", - "queueReason": "Sanctions change with terrorism relevance.", - "queueBucket": "sanctions", - "time": "31 Mar 2026, 11:19", + "time": "25 Mar 2026, 12:00", "lat": 54.5, "lng": -2.5, "major": false, - "publishedAt": "2026-03-31T10:19:24.000Z", + "publishedAt": "2026-03-25T12:00:00.000Z", "keywordHits": [], "terrorismHits": [], - "eventType": "sanctions_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": -3.9, - "freshnessBucket": 0, - "freshUntil": "2026-04-10T10:19:24.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-88e480db5fcdf290", - "source": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "sourceUrl": "https://ofsi.blog.gov.uk/2026/03/31/ofsis-10-year-anniversary-reflections-from-giles-thomson-director-of-ofsi/", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-03-31T10:19:24.000Z", - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-88e480db5fcdf290" - }, - { - "id": "eurojust-publications-0", - "fusedIncidentId": "fusion-ad5d553009dd02a4", - "title": "Eurojust Meeting On Counter-Terrorism 26-27 November 2025 - Summary Of Discussions", - "location": "Europe", - "region": "eu", - "lane": "oversight", - "severity": "moderate", - "status": "Update", - "actor": "Eurojust a Publications (RSS)", - "subject": "Eurojust a Publications (RSS)", - "happenedWhen": "09 Apr 2026, 13:00", - "confidence": "Verified official source update", - "confidenceScore": 0.86, - "summary": "On 26 and 27 November 2025, Eurojust hosted its annual counter-terrorism meeting, which gathered specialised prosecutors and other experts from 33 countries, as well as representatives from EU institutions. Participants discussed best practices and the latest ", - "aiSummary": "Eurojust a Publications (RSS) has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "On 26 and 27 November 2025, Eurojust hosted its annual counter-terrorism meeting, which gathered specialised prosecutors and other experts from 33 countries, as well as representatives from EU institutions. Participants discussed best practices and the latest challenges in combatting terrorist threats, including the definition of terrorism, and the emerging trends shaping the threat landscape. Participants shared their experiences and lessons learned relating to the definition of victims of terrorism, cooperation with online service providers to obtain electronic evidence in counter-terrorism…", - "peopleInvolved": [], - "source": "Eurojust a Publications (RSS)", - "sourceUrl": "https://www.eurojust.europa.eu/publication/eurojust-meeting-counter-terrorism-26-27-november-2025-summary-discussions", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "09 Apr 2026, 13:00", - "lat": 50, - "lng": 10, - "major": false, - "publishedAt": "2026-04-09T12:00:00.000Z", - "keywordHits": [ - "terrorism", - "threat" - ], - "terrorismHits": [ - "terrorism", - "terrorist" - ], "eventType": "oversight_update", "geoPrecision": "country", "isOfficial": true, - "priorityScore": -5.2, + "priorityScore": -6.4, "freshnessBucket": 0, - "freshUntil": "2026-04-17T12:00:00.000Z", + "freshUntil": "2026-04-02T12:00:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-ad5d553009dd02a4", - "source": "Eurojust a Publications (RSS)", - "sourceUrl": "https://www.eurojust.europa.eu/publication/eurojust-meeting-counter-terrorism-26-27-november-2025-summary-discussions", + "fusedIncidentId": "fusion-e4ae87f9ebe0b16e", + "source": "National Cyber Security Centre (UK) a News", + "sourceUrl": "https://www.ncsc.gov.uk/news/vulnerabilities-affecting-citrix-netscaler-adc-gateway", "sourceTier": "context", "reliabilityProfile": "official_context", - "publishedAt": "2026-04-09T12:00:00.000Z", + "publishedAt": "2026-03-25T12:00:00.000Z", "confidence": "Verified official source update" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-ad5d553009dd02a4" + "isDuplicateOf": "fusion-e4ae87f9ebe0b16e" }, { - "id": "gnet-research-3", - "fusedIncidentId": "fusion-f289bcaeba8fd554", - "title": "Jedag Jedug Jihadists: How Tik. Tok Edits Turn Glorification Of Jemaah Islamiyah Figures Into Entertainment", - "location": "Indonesia", - "region": "uk", + "id": "gnet-artificial-intelligence-rss-0", + "fusedIncidentId": "fusion-a705408939c4c725", + "title": "Al-Qaeda’S Cyber Jihad Movement: Plugging Into Iran’S Wartime Hacktivist Ecosystem", + "location": "United States", + "region": "international", "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "Global Network on Extremism & Technology (GNET) a Main Feed", - "subject": "Global Network on Extremism & Technology (GNET) a Main Feed", - "happenedWhen": "15 Apr 2026, 00:42", + "actor": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", + "subject": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", + "happenedWhen": "23 Mar 2026, 12:32", "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "On Indonesian Tik. Tok, figures associated with past Jemaah Islamiyah (JI) terrorist attacks are quietly reentering public view, not through active news coverage or historical documentaries, but through short, stylised video edits designed for entertainment. I", - "aiSummary": "Global Network on Extremism & Technology (GNET) a Main Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "On Indonesian Tik. Tok, figures associated with past Jemaah Islamiyah (JI) terrorist attacks are quietly reentering public view, not through active news coverage or historical documentaries, but through short, stylised video edits designed for entertainment. Indonesia offers a particularly revealing case study for observing this trend, given its Tik. Tok user base of roughly 100 million adult users as of early 2025 […]", + "confidenceScore": 0.7, + "summary": "On 4 March 2026, the Cyber Jihad Movement (CJM) issued a communiqué on its official Signal channel announcing its “entrance into the Iranian-American war and the Afghanistan-Pakistan war”, marking a significant inflexion point in al-Qaeda’s cyber strategy. Iss", + "aiSummary": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS) has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "On 4 March 2026, the Cyber Jihad Movement (CJM) issued a communiqué on its official Signal channel announcing its “entrance into the Iranian-American war and the Afghanistan-Pakistan war”, marking a significant inflexion point in al-Qaeda’s cyber strategy. Issued just days after the United States and Israel launched Operation “Epic Fury” and Operation “Roaring Lion” on 28 February 2026, – strikes […]", "peopleInvolved": [], - "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/15/jedag-jedug-jihadists-how-tiktok-edits-turn-glorification-of-jemaah-islamiyah-figures-into-entertainment/", + "source": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", + "sourceUrl": "https://gnet-research.org/2026/03/23/al-qaedas-cyber-jihad-movement-plugging-into-irans-wartime-hacktivist-ecosystem/", "sourceTier": "research", "reliabilityProfile": "specialist_research", "incidentTrack": "", "laneReason": "Prevention, radicalisation, or analytical context source.", "queueReason": "Prevention, radicalisation, or analytical context source.", "queueBucket": "prevention", - "time": "15 Apr 2026, 00:42", - "lat": -0.7893, - "lng": 113.9213, + "time": "23 Mar 2026, 12:32", + "lat": 39.8283, + "lng": -98.5795, "major": false, - "publishedAt": "2026-04-14T23:42:14.000Z", + "publishedAt": "2026-03-23T12:32:12.000Z", "keywordHits": [ - "attacks" + "al-qaeda" ], "terrorismHits": [ - "terrorist" + "jihad", + "al-qaeda" ], "eventType": "prevention_update", "geoPrecision": "region", "isOfficial": false, - "priorityScore": -5.7, + "priorityScore": -7.7, "freshnessBucket": 0, - "freshUntil": "2026-04-22T23:42:14.000Z", + "freshUntil": "2026-03-31T12:32:12.000Z", "needsHumanReview": false, "isTerrorRelevant": true, "corroboratingSources": [ { - "fusedIncidentId": "fusion-f289bcaeba8fd554", - "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/15/jedag-jedug-jihadists-how-tiktok-edits-turn-glorification-of-jemaah-islamiyah-figures-into-entertainment/", + "fusedIncidentId": "fusion-a705408939c4c725", + "source": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", + "sourceUrl": "https://gnet-research.org/2026/03/23/al-qaedas-cyber-jihad-movement-plugging-into-irans-wartime-hacktivist-ecosystem/", "sourceTier": "research", "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-14T23:42:14.000Z", + "publishedAt": "2026-03-23T12:32:12.000Z", "confidence": "Research or analytical source" } ], "corroborationCount": 1, - "isDuplicateOf": "fusion-f289bcaeba8fd554" + "isDuplicateOf": "fusion-a705408939c4c725" }, { - "id": "uk-ncsc-news-4", - "fusedIncidentId": "fusion-a4c8d412564d7890", - "title": "NCSC Warns Of Messaging App Targeting", - "location": "United Kingdom", - "region": "uk", - "lane": "oversight", + "id": "fixture-json-prevention-0", + "fusedIncidentId": "fusion-f5cb7bfa16235fcf", + "title": "Community Prevention Workshop Expanded Across Regions", + "location": "Europe", + "region": "international", + "lane": "prevention", "severity": "moderate", "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "31 Mar 2026, 13:00", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "The NCSC has issued actions for individuals at risk of targeted attacks against messaging apps.", - "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "The NCSC has issued actions for individuals at risk of targeted attacks against messaging apps.", + "actor": "Fixture Prevention Feed", + "subject": "Fixture Prevention Feed", + "happenedWhen": "04 Apr 2026, 10:30", + "confidence": "Research or analytical source", + "confidenceScore": 0.68, + "summary": "Prevention specialists announced a new training cycle focused on reporting suspicious behavior.", + "aiSummary": "Fixture Prevention Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", + "sourceExtract": "Prevention specialists announced a new training cycle focused on reporting suspicious behavior.", "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/ncsc-warns-of-messaging-app-targeting", - "sourceTier": "context", - "reliabilityProfile": "official_context", + "source": "Fixture Prevention Feed", + "sourceUrl": "https://fixtures.albertalert.local/prevention/1", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "31 Mar 2026, 13:00", - "lat": 54.5, - "lng": -2.5, + "laneReason": "Prevention, radicalisation, or analytical context source.", + "queueReason": "Prevention, radicalisation, or analytical context source.", + "queueBucket": "prevention", + "time": "04 Apr 2026, 10:30", + "lat": 50, + "lng": 10, "major": false, - "publishedAt": "2026-03-31T12:00:00.000Z", - "keywordHits": [ - "attacks" - ], + "publishedAt": "2026-04-04T09:30:00.000Z", + "keywordHits": [], "terrorismHits": [], - "eventType": "oversight_update", + "eventType": "prevention_update", "geoPrecision": "country", - "isOfficial": true, - "priorityScore": -5.8, + "isOfficial": false, + "priorityScore": -8.3, "freshnessBucket": 0, - "freshUntil": "2026-04-08T12:00:00.000Z", + "freshUntil": "2026-04-12T09:30:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-a4c8d412564d7890", - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/ncsc-warns-of-messaging-app-targeting", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-03-31T12:00:00.000Z", - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-a4c8d412564d7890" - }, - { - "id": "gnet-research-3", - "fusedIncidentId": "fusion-b96e09025d9b32c6", - "title": "Francoism Online: Neo-Fascism, Memes, And Historical Revisionism In Spain", - "location": "Spain", - "region": "uk", - "lane": "prevention", - "severity": "moderate", - "status": "Update", - "actor": "Global Network on Extremism & Technology (GNET) a Main Feed", - "subject": "Global Network on Extremism & Technology (GNET) a Main Feed", - "happenedWhen": "09 Apr 2026, 12:05", - "confidence": "Research or analytical source", - "confidenceScore": 0.68, - "summary": "In Spain, a recent study indicates that young men are showing an inclination toward far-right ideologies, often accompanied by an attraction to the period of Francisco Franco’s dictatorship, established following the Spanish Civil War (1936–1939) and lasting u", - "aiSummary": "Global Network on Extremism & Technology (GNET) a Main Feed has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "In Spain, a recent study indicates that young men are showing an inclination toward far-right ideologies, often accompanied by an attraction to the period of Francisco Franco’s dictatorship, established following the Spanish Civil War (1936–1939) and lasting until 1975. This admiration is increasingly visible on social media, where content glorifying Franco has gained popularity, often relying on disinformation about different […]", - "peopleInvolved": [], - "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/09/francoism-online-neo-fascism-memes-and-historical-revisionism-in-spain/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "queueBucket": "prevention", - "time": "09 Apr 2026, 12:05", - "lat": 40.4637, - "lng": -3.7492, - "major": false, - "publishedAt": "2026-04-09T11:05:48.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "prevention_update", - "geoPrecision": "region", - "isOfficial": false, - "priorityScore": -6.3, - "freshnessBucket": 0, - "freshUntil": "2026-04-17T11:05:48.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-b96e09025d9b32c6", - "source": "Global Network on Extremism & Technology (GNET) a Main Feed", - "sourceUrl": "https://gnet-research.org/2026/04/09/francoism-online-neo-fascism-memes-and-historical-revisionism-in-spain/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-04-09T11:05:48.000Z", - "confidence": "Research or analytical source" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-b96e09025d9b32c6" - }, - { - "id": "uk-ncsc-news-4", - "fusedIncidentId": "fusion-4b8334e1ce46e542", - "title": "Vulnerability Affecting F5 BIG-IP APM", - "location": "United Kingdom", - "region": "uk", - "lane": "oversight", - "severity": "moderate", - "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "30 Mar 2026, 13:00", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "The NCSC is encouraging UK organisations to mitigate an unauthenticated remote code execution vulnerability affecting F5 BIG-IP Access Policy Manager.", - "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "The NCSC is encouraging UK organisations to mitigate an unauthenticated remote code execution vulnerability affecting F5 BIG-IP Access Policy Manager.", - "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/vulnerability-affecting-f5-big-ip-apm", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "30 Mar 2026, 13:00", - "lat": 54.5, - "lng": -2.5, - "major": false, - "publishedAt": "2026-03-30T12:00:00.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "oversight_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": -6.4, - "freshnessBucket": 0, - "freshUntil": "2026-04-07T12:00:00.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-4b8334e1ce46e542", - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/vulnerability-affecting-f5-big-ip-apm", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-03-30T12:00:00.000Z", - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-4b8334e1ce46e542" - }, - { - "id": "uk-ncsc-news-4", - "fusedIncidentId": "fusion-e4ae87f9ebe0b16e", - "title": "Vulnerabilities Affecting Citrix Net. Scaler ADC And Citrix Net. Scaler Gateway", - "location": "United Kingdom", - "region": "uk", - "lane": "oversight", - "severity": "moderate", - "status": "Update", - "actor": "National Cyber Security Centre (UK) a News", - "subject": "National Cyber Security Centre (UK) a News", - "happenedWhen": "25 Mar 2026, 12:00", - "confidence": "Verified official source update", - "confidenceScore": 0.84, - "summary": "UK organisations encouraged to take immediate action to mitigate two recently disclosed vulnerabilities affecting Citrix Net. Scaler ADC and Citrix Net. Scaler Gateway.", - "aiSummary": "National Cyber Security Centre (UK) a News has published an oversight or review update. This is useful for legal, custody, supervision, or institutional risk context rather than immediate public warning.", - "sourceExtract": "UK organisations encouraged to take immediate action to mitigate two recently disclosed vulnerabilities affecting Citrix Net. Scaler ADC and Citrix Net. Scaler Gateway.", - "peopleInvolved": [], - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/vulnerabilities-affecting-citrix-netscaler-adc-gateway", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "incidentTrack": "", - "laneReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueReason": "Oversight, legislation, or review signal relevant to counter-terror posture.", - "queueBucket": "oversight", - "time": "25 Mar 2026, 12:00", - "lat": 54.5, - "lng": -2.5, - "major": false, - "publishedAt": "2026-03-25T12:00:00.000Z", - "keywordHits": [], - "terrorismHits": [], - "eventType": "oversight_update", - "geoPrecision": "country", - "isOfficial": true, - "priorityScore": -6.4, - "freshnessBucket": 0, - "freshUntil": "2026-04-02T12:00:00.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-e4ae87f9ebe0b16e", - "source": "National Cyber Security Centre (UK) a News", - "sourceUrl": "https://www.ncsc.gov.uk/news/vulnerabilities-affecting-citrix-netscaler-adc-gateway", - "sourceTier": "context", - "reliabilityProfile": "official_context", - "publishedAt": "2026-03-25T12:00:00.000Z", - "confidence": "Verified official source update" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-e4ae87f9ebe0b16e" - }, - { - "id": "gnet-artificial-intelligence-rss-0", - "fusedIncidentId": "fusion-a705408939c4c725", - "title": "Al-Qaeda’S Cyber Jihad Movement: Plugging Into Iran’S Wartime Hacktivist Ecosystem", - "location": "United States", - "region": "international", - "lane": "prevention", - "severity": "moderate", - "status": "Update", - "actor": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", - "subject": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", - "happenedWhen": "23 Mar 2026, 12:32", - "confidence": "Research or analytical source", - "confidenceScore": 0.7, - "summary": "On 4 March 2026, the Cyber Jihad Movement (CJM) issued a communiqué on its official Signal channel announcing its “entrance into the Iranian-American war and the Afghanistan-Pakistan war”, marking a significant inflexion point in al-Qaeda’s cyber strategy. Iss", - "aiSummary": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS) has published a prevention or radicalisation update. The value is horizon scanning, theme detection, and context for later operational or analytical work.", - "sourceExtract": "On 4 March 2026, the Cyber Jihad Movement (CJM) issued a communiqué on its official Signal channel announcing its “entrance into the Iranian-American war and the Afghanistan-Pakistan war”, marking a significant inflexion point in al-Qaeda’s cyber strategy. Issued just days after the United States and Israel launched Operation “Epic Fury” and Operation “Roaring Lion” on 28 February 2026, – strikes […]", - "peopleInvolved": [], - "source": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", - "sourceUrl": "https://gnet-research.org/2026/03/23/al-qaedas-cyber-jihad-movement-plugging-into-irans-wartime-hacktivist-ecosystem/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "incidentTrack": "", - "laneReason": "Prevention, radicalisation, or analytical context source.", - "queueReason": "Prevention, radicalisation, or analytical context source.", - "queueBucket": "prevention", - "time": "23 Mar 2026, 12:32", - "lat": 39.8283, - "lng": -98.5795, - "major": false, - "publishedAt": "2026-03-23T12:32:12.000Z", - "keywordHits": [ - "al-qaeda" - ], - "terrorismHits": [ - "jihad", - "al-qaeda" - ], - "eventType": "prevention_update", - "geoPrecision": "region", - "isOfficial": false, - "priorityScore": -7.7, - "freshnessBucket": 0, - "freshUntil": "2026-03-31T12:32:12.000Z", - "needsHumanReview": false, - "isTerrorRelevant": true, - "corroboratingSources": [ - { - "fusedIncidentId": "fusion-a705408939c4c725", - "source": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", - "sourceUrl": "https://gnet-research.org/2026/03/23/al-qaedas-cyber-jihad-movement-plugging-into-irans-wartime-hacktivist-ecosystem/", - "sourceTier": "research", - "reliabilityProfile": "specialist_research", - "publishedAt": "2026-03-23T12:32:12.000Z", - "confidence": "Research or analytical source" - } - ], - "corroborationCount": 1, - "isDuplicateOf": "fusion-a705408939c4c725" - } - ], - "sourceErrors": [ - { - "id": "austria-interior-ministry-rss-index", - "provider": "Austrian Interior Ministry - RSS Index", - "endpoint": "https://www.bmi.gv.at/rss_feed/start.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=MTc1. YzA1. Mz. Bl. NzY3OThlZWFlMDJmOWU3ODlj. Zj. IyMDA1NWZi. ZjI4. NjA4NTQ3NTMx&t=Y2. IxNDdl. Mz. FkZTIx. Zj. RjMTI0L0. Fwci8yMDI2. Oj. Ew. OjE0. OjA4ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "status": 503, - "message": "HTTP 503", - "errorCode": "HTTP_STATUS_ERROR", - "category": "http-status-error" - }, - { - "id": "austria-interior-ministry-news", - "provider": "Austrian Interior Ministry - News", - "endpoint": "https://www.bmi.gv.at/news.aspx", - "finalUrl": "https://www.bmi.gv.at/myracloud-blocked/?r=YTgxMWIyOGMyOTU5. Nj. VlZTIyN2Y5. MmY4MGQ0ZTUyZDUzY2. RlYTA2Y2M1. MjQ5M2. Ew&t=YWFhNDhlMDIz. Yz. QzOWQzZTI0L0. Fwci8yMDI2. Oj. Ew. OjE2. OjU1ICsw. Mj. Aw&w=ODkxZTUwODhiNDA0N2U2. ZjdkOGZm. Nm. ZlMDZiNTQw. ZmM4OWM1ZGQ5ZDRl. NjA2. Mzc4", - "status": 503, - "message": "HTTP 503", - "errorCode": "HTTP_STATUS_ERROR", - "category": "http-status-error" - }, - { - "id": "uk-parliament-home-affairs-committee", - "provider": "UK Parliament a Home Affairs Committee (News)", - "endpoint": "https://committees.parliament.uk/committee/83/home-affairs-committee/news/", - "finalUrl": "", - "status": null, - "message": "This operation was aborted", - "errorCode": "FETCH_TIMEOUT", - "category": "timeout" + "corroboratingSources": [], + "corroborationCount": 0, + "isDuplicateOf": null } ], + "sourceErrors": [], "restoreAudit": null, "geoLookupSnapshot": [ { @@ -12379,22674 +11518,280 @@ "precision": "high", "lat": 37.8651, "lng": -119.5383 - }, - { - "terms": [ - "canada", - "canadian" - ], - "label": "Canada", - "kind": "country", - "precision": "low", - "lat": 56.1304, - "lng": -106.3468 - }, - { - "terms": [ - "australia", - "australian" - ], - "label": "Australia", - "kind": "country", - "precision": "low", - "lat": -25.2744, - "lng": 133.7751 - } - ], - "buildWarning": "Deferred 368 low-yield source(s) on health cooldown. | Guardrails breached: successful-source-floor-breached (runtime=283557ms, failedRate=0.017, successfulSources=7)", - "runMetrics": { - "schedulerMode": "candidate", - "htmlBudget": 40, - "htmlDomainCapPerRun": 3, - "htmlDomainUsage": { - "news.met.police.uk": 2, - "www.avonandsomerset.police.uk": 2, - "www.scotland.police.uk": 1, - "www.psni.police.uk": 1, - "www.westyorkshirepolice.co.uk": 1, - "policie.gov.cz": 1, - "www.politie.nl": 2, - "mossos.gencat.cat": 1, - "www.policia.es": 1, - "www.policiajudiciaria.pt": 1, - "news.camden.gov.uk": 1, - "www.chelwest.nhs.uk": 1, - "www.hounslow.gov.uk": 1, - "www.merton.gov.uk": 1, - "northeastlondon.icb.nhs.uk": 1, - "www.walthamforest.gov.uk": 1, - "www.gov.uk": 3, - "www.mi5.gov.uk": 1, - "community-messaging.dc.police.uk": 1, - "www.bmi.gv.at": 1, - "www.unodc.org": 1, - "www.hillingdon.gov.uk": 1, - "www.homerton.nhs.uk": 1, - "www.kch.nhs.uk": 1, - "www.swlstg.nhs.uk": 1, - "news.npcc.police.uk": 1, - "www.ipco.org.uk": 1, - "hmiprobation.justiceinspectorates.gov.uk": 1, - "www.gov.scot": 1, - "www.dhs.gov": 1, - "www.state.gov": 1, - "ofac.treasury.gov": 1, - "www.verfassungsschutz.de": 1, - "www.interpol.int": 1, - "www.bexley.gov.uk": 1 - }, - "coverage": { - "eligible": 547, - "scheduled": 179, - "initialScheduled": 98, - "continuationAttempted": 81, - "checked": 176, - "eligibleCheckedRate": 0.322, - "scheduledCheckedRate": 0.983 - }, - "freshnessSlaByTier": { - "high": { - "count": 7, - "avgMinutes": 5062, - "p95Minutes": 11000 - }, - "low": { - "count": 12, - "avgMinutes": 6733, - "p95Minutes": 9727 - }, - "medium": { - "count": 20, - "avgMinutes": 4992, - "p95Minutes": 11000 - } - }, - "failureReasons": { - "success": 7, - "unchanged": 4, - "timeout-or-aborted": 4 - }, - "sourceRunStats": { - "totalConfiguredSources": 549, - "sourcesCheckedThisRun": 179, - "sourcesUpdatedThisRun": 7, - "sourcesFailedThisRun": 3, - "sourcesUnchangedThisRun": 4 - }, - "runDurationMs": 283557, - "playwrightFallback": { - "attempts": 0, - "successes": 0, - "maxAttempts": 4, - "timeoutMs": 12000 - }, - "guardrails": { - "maxRuntimeMs": 720000, - "maxFailedSourceRate": 0.65, - "minSuccessfulSources": 8, - "targetSuccessfulSourcesPerRun": 60, - "failedSourceRate": 0.017, - "successfulSources": 7, - "violations": [ - "successful-source-floor-breached" - ], - "midRun": { - "throttleLevel": 0, - "totalAttempted": 179, - "totalFailed": 3, - "totalSuccessful": 7, - "failedRate": 0.017, - "successRate": 0.039, - "avgSourceDurationMs": 1584, - "criticalOnly": false, - "skipPlaywright": false, - "transitions": [] - } - } - }, - "health": { - "expectedRefreshMinutes": 30, - "staleAfterMinutes": 50, - "lastAttemptedRefreshTime": "2026-04-24T08:17:25.806Z", - "usedFallback": false, - "lastSuccessfulRefreshTime": "2026-04-24T08:17:25.806Z", - "lastSuccessfulRunId": "24879386517", - "lastSuccessfulRunNumber": "510", - "lastSuccessfulRunAttempt": "1", - "lastSuccessfulHeadSha": "4b91e9681a86e06ecb9443c627b7b278419b21ca", - "lastSuccessfulEvent": "schedule", - "lastSuccessfulSourceCount": 176, - "sourceErrorCount": 3, - "hasWarnings": true, - "autoDeferredSourceCount": 368, - "autoDeferredSources": [ - { - "id": "frontex-news-releases", - "provider": "Frontex a News Releases", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "bdk-rss", - "provider": "Bund Deutscher Kriminalbeamter - RSS", - "reason": "health-deprioritised", - "until": "2026-04-25T14:03:06.243Z", - "statusKind": "cooled_down" - }, - { - "id": "belgium-crisis-centre-news", - "provider": "Belgian National Crisis Centre - Newsroom", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "denmark-pet-news", - "provider": "Danish Security and Intelligence Service - News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "ecfr-feeds-index", - "provider": "ECFR - Feeds", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "enisa-news", - "provider": "ENISA (EU Cybersecurity Agency) a News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "enisa-rss-transition-page", - "provider": "ENISA - RSS Feeds Transition Notice", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "euiss-home", - "provider": "EU Institute for Security Studies", - "reason": "health-deprioritised", - "until": "2026-04-24T18:01:25.327Z", - "statusKind": "cooled_down" - }, - { - "id": "euractiv-security-rss", - "provider": "BBC News - Europe", - "reason": "health-deprioritised", - "until": "2026-04-25T14:03:06.243Z", - "statusKind": "cooled_down" - }, - { - "id": "eurojust-press-news-html", - "provider": "Eurojust - Press Releases and News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "eurojust-press-releases", - "provider": "Eurojust - Press Releases", - "reason": "health-deprioritised", - "until": "2026-04-25T18:02:43.923Z", - "statusKind": "cooled_down" - }, - { - "id": "europol-media-press", - "provider": "Europol a Media and Press", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "europol-newsroom-html", - "provider": "Europol - Newsroom", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "finland-supo-news", - "provider": "Finnish Security Intelligence Service - News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "german-bfv-news", - "provider": "German BfV - Press", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "german-interior-ministry-press", - "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", - "reason": "health-deprioritised", - "until": "2026-04-25T10:13:21.253Z", - "statusKind": "cooled_down" - }, - { - "id": "icct-home", - "provider": "ICCT - Home", - "reason": "health-deprioritised", - "until": "2026-04-24T18:01:25.327Z", - "statusKind": "cooled_down" - }, - { - "id": "nctv-english-rss", - "provider": "NCTV Netherlands - English RSS", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "paris-prefecture-police-rss-page", - "provider": "Paris Prefecture of Police - RSS", - "reason": "health-deprioritised", - "until": "2026-04-25T10:13:21.253Z", - "statusKind": "cooled_down" - }, - { - "id": "spain-interior-ministry-news", - "provider": "Spanish Ministry of the Interior - Press", - "reason": "health-deprioritised", - "until": "2026-04-25T10:13:21.253Z", - "statusKind": "cooled_down" - }, - { - "id": "statewatch-news", - "provider": "Statewatch - News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - }, - { - "id": "breakingnews-ie", - "provider": "BreakingNews.ie", - "reason": "health-deprioritised", - "until": "2026-04-24T18:01:25.327Z", - "statusKind": "cooled_down" - }, - { - "id": "independent-ie", - "provider": "Independent.ie", - "reason": "health-deprioritised", - "until": "2026-04-24T18:01:25.327Z", - "statusKind": "cooled_down" - }, - { - "id": "belgian-federal-police-news", - "provider": "Belgian Federal Police - News", - "reason": "health-deprioritised", - "until": "2026-04-25T11:47:27.254Z", - "statusKind": "cooled_down" - }, - { - "id": "ertzaintza-news", - "provider": "Ertzaintza - News", - "reason": "health-deprioritised", - "until": "2026-04-24T14:59:55.048Z", - "statusKind": "cooled_down" - } - ], - "operationalDeferredSourceCount": 0, - "operationalDeferredSources": [], - "sourceRunStats": { - "totalConfiguredSources": 549, - "sourcesCheckedThisRun": 179, - "sourcesUpdatedThisRun": 7, - "sourcesFailedThisRun": 3, - "sourcesUnchangedThisRun": 4 - }, - "extraMetrics": { - "schedulerMode": "candidate", - "coverage": { - "eligible": 547, - "scheduled": 179, - "initialScheduled": 98, - "continuationAttempted": 81, - "checked": 176, - "eligibleCheckedRate": 0.322, - "scheduledCheckedRate": 0.983 - }, - "freshnessSlaByTier": { - "high": { - "count": 7, - "avgMinutes": 5062, - "p95Minutes": 11000 - }, - "low": { - "count": 12, - "avgMinutes": 6733, - "p95Minutes": 9727 - }, - "medium": { - "count": 20, - "avgMinutes": 4992, - "p95Minutes": 11000 - } - }, - "failureReasons": { - "success": 7, - "unchanged": 4, - "timeout-or-aborted": 4 - }, - "sourceRunStats": { - "totalConfiguredSources": 549, - "sourcesCheckedThisRun": 179, - "sourcesUpdatedThisRun": 7, - "sourcesFailedThisRun": 3, - "sourcesUnchangedThisRun": 4 - }, - "playwrightFallback": { - "attempts": 0, - "successes": 0 - }, - "guardrailViolations": [ - "successful-source-floor-breached" - ], - "midRunGuardrail": { - "throttleLevel": 0, - "totalAttempted": 179, - "totalFailed": 3, - "totalSuccessful": 7, - "failedRate": 0.017, - "successRate": 0.039, - "avgSourceDurationMs": 1584, - "criticalOnly": false, - "skipPlaywright": false, - "transitions": [] - } - }, - "sourceHealth": { - "euaa-news": { - "provider": "EUAA (EU Agency for Asylum) - Press Releases", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eulisa-news-events": { - "provider": "eu-LISA - News and Events (RSS)", - "lane": "border", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "frontex-news-releases": { - "provider": "Frontex a News Releases", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "austria-interior-ministry-news": { - "provider": "Austrian Interior Ministry - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "cooldownUntil": "2026-04-26T08:17:25.806Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T08:17:25.806Z" - }, - "austria-interior-ministry-rss-index": { - "provider": "Austrian Interior Ministry - RSS Index", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "cooldownUntil": "2026-04-26T08:17:25.806Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T08:17:25.806Z" - }, - "bdk-rss": { - "provider": "Bund Deutscher Kriminalbeamter - RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "belgium-crisis-centre-news": { - "provider": "Belgian National Crisis Centre - Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "quarantineReason": "Health score degraded to 5 after repeated failures", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "denmark-pet-news": { - "provider": "Danish Security and Intelligence Service - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ecfr-feeds-index": { - "provider": "ECFR - Feeds", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "enisa-news": { - "provider": "ENISA (EU Cybersecurity Agency) a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "enisa-rss-transition-page": { - "provider": "ENISA - RSS Feeds Transition Notice", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "euiss-home": { - "provider": "EU Institute for Security Studies", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "euractiv-security-rss": { - "provider": "BBC News - Europe", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eurojust-press-news-html": { - "provider": "Eurojust - Press Releases and News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eurojust-press-releases": { - "provider": "Eurojust - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 72, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T16:07:40.227Z", - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "europol-media-press": { - "provider": "Europol a Media and Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "europol-news-rss": { - "provider": "Europol - Newsroom (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "europol-newsroom-html": { - "provider": "Europol - Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "finland-supo-news": { - "provider": "Finnish Security Intelligence Service - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "german-bfv-news": { - "provider": "German BfV - Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "german-interior-ministry-press": { - "provider": "German Federal Ministry for Economic Cooperation and Development - Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 400", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Health score degraded to 20 after repeated failures", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "icct-home": { - "provider": "ICCT - Home", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nctv-english-rss": { - "provider": "NCTV Netherlands - English RSS", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "paris-prefecture-police-rss-page": { - "provider": "Paris Prefecture of Police - RSS", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "spain-interior-ministry-news": { - "provider": "Spanish Ministry of the Interior - Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "statewatch-news": { - "provider": "Statewatch - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "breakingnews-ie": { - "provider": "BreakingNews.ie", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "independent-ie": { - "provider": "Independent.ie", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "belgian-federal-police-news": { - "provider": "Belgian Federal Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T11:47:27.254Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastEmptyAt": "2026-04-23T10:13:21.253Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "cooldownUntil": "2026-04-25T11:47:27.254Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-25T11:47:27.254Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "czech-police-news": { - "provider": "Police of the Czech Republic - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "dutch-police-rss-index": { - "provider": "Politie.nl - RSS", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ertzaintza-news": { - "provider": "Ertzaintza - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "finland-police-news": { - "provider": "Finnish Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "german-bka-press": { - "provider": "German BKA - Press Releases (2026 archive)", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "quarantineReason": "Health score degraded to 5 after repeated failures", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "german-bka-press-releases-de": { - "provider": "BKA Germany - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T17:39:27.641Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 15, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastEmptyAt": "2026-04-22T16:17:11.443Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T07:32:24.475Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "cooldownUntil": "2026-04-24T17:39:27.641Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T08:04:04.612Z", - "quarantineReason": "Infrastructure instability — mixed timeout and network errors; auto-retry likely to recover", - "nextFetchAt": "2026-04-24T17:39:27.641Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "guardia-civil-news": { - "provider": "El Pais English - Guardia Civil", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "not-found-404", - "lastErrorMessage": "HTTP 404", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "mossos-news": { - "provider": "Mossos d'Esquadra - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "paris-prefecture-police-press-releases": { - "provider": "Paris Prefecture of Police - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "policia-nacional-news": { - "provider": "Policia Nacional - Press", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T18:05:04.781Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-17T20:09:53.653Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-19T18:05:04.781Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T20:09:53.653Z", - "quarantineReason": "Health score degraded to 5 after repeated failures", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "romanian-police-news": { - "provider": "Romanian Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "curia-press-rss-en": { - "provider": "Court of Justice of the European Union - RSS (EN/FR)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 65, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eppo-news-node-7": { - "provider": "European Public Prosecutor's Office - News (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-cellar-rss-atom": { - "provider": "Publications Office of the European Union (CELLAR) a RSS/Atom Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 61, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-commission-counter-terrorism-measures-2026": { - "provider": "European Commission - Counter Terrorism Measures 2026", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-commission-home-affairs-topic": { - "provider": "European Commission - Home Affairs", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-commission-presscorner-home": { - "provider": "Council of the EU - Press Releases (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-council-fight-against-terrorism": { - "provider": "Council of the EU - Fight Against Terrorism", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-council-jha-meetings": { - "provider": "Council of the EU - JHA Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 72, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T16:07:40.227Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-council-jha-register-rss": { - "provider": "Council of the EU - Latest Documents RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-council-press-releases": { - "provider": "Council of the European Union a Press Releases (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-council-press-releases-html": { - "provider": "Council of the EU - Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-council-rss-index": { - "provider": "Council of the EU - RSS Index", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-ct-coordinator": { - "provider": "EU Counter-Terrorism Coordinator a Council of the EU", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-ejustice-news-rss": { - "provider": "European e-Justice - News RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 57, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 34, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T13:27:18.679Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-18T13:27:18.679Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-eppo-news": { - "provider": "European Public Prosecutor's Office - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-fra-rss": { - "provider": "EU Agency for Fundamental Rights (FRA) a RSS", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-21T11:46:02.615Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-home-affairs-news": { - "provider": "European Commission a Home Affairs News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-olaf-news": { - "provider": "OLAF (EU Anti-Fraud Office) a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eu-security-union-strategy": { - "provider": "European Commission a Security Union Strategy", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eucrim-counter-terrorism-agenda": { - "provider": "eucrim - Commission Counter Terrorism Agenda", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eucrim-judicial-counter-terrorism-register": { - "provider": "eucrim - Judicial Counter Terrorism Register", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eurojust-publications": { - "provider": "Eurojust a Publications (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 105, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "eurojust-rss-feeds-page": { - "provider": "Eurojust - RSS Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "europarl-committee-libe": { - "provider": "European Parliament - LIBE Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "europarl-committee-sede": { - "provider": "European Parliament - SEDE Press Releases", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "europarl-pressreleases-committees": { - "provider": "European Parliament a Press Releases (Committees) (RSS)", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "europol-tesat-report": { - "provider": "Europol - TESAT Report", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fra-rss": { - "provider": "Human Rights Watch - News RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "europol-eu-iru": { - "provider": "Europol a EU Internet Referral Unit (EU IRU)", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "isd-global-publications": { - "provider": "ISD - Publications", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ncsc-nl-rss": { - "provider": "NCSC Netherlands - RSS", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "eu-council-terrorism-sanctions": { - "provider": "Council of the EU - Sanctions Against Terrorism", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unhcr-europe-news": { - "provider": "UNHCR Europe a News", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "clingendael-publications": { - "provider": "Clingendael Institute a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dw-europe-rss": { - "provider": "Deutsche Welle a Europe (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ecfr-publications": { - "provider": "European Council on Foreign Relations (ECFR) a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "euronews-europe": { - "provider": "Euronews a Europe", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 28, - "emptyRuns": 21, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-22T22:53:26.529Z", - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 406", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 406", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-24T13:04:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 24, - "quarantined": true, - "quarantinedAt": "2026-04-23T03:28:47.210Z", - "quarantineReason": "Health score degraded to 24 after repeated failures", - "nextFetchAt": "2026-04-24T13:04:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "financial-times-world": { - "provider": "Financial Times a World", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "france24-europe-rss": { - "provider": "France 24 a Europe (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T05:47:56.833Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 4, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T05:47:56.833Z", - "lastEmptyAt": "2026-04-17T22:12:37.099Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T16:03:49.134Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T06:12:01.477Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T05:47:56.833Z" - } - ], - "cooldownUntil": "2026-04-25T05:47:56.833Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-19T16:03:49.134Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T05:47:56.833Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "french-interior-ministry-news": { - "provider": "French Ministry of the Interior - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "icct-perspectives-on-terrorism": { - "provider": "Perspectives on Terrorism (ICCT) a Journal", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "icct-publications": { - "provider": "International Centre for Counter-Terrorism (ICCT) - Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "netherlands-nctv-news": { - "provider": "Dutch NCTV - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "norway-pst-news": { - "provider": "Norwegian Government - News and Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 72, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T16:07:40.227Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "politico-europe": { - "provider": "Politico Europe", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rte-ireland-news-rss": { - "provider": "RTE News - Ireland (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 2, - "emptyRuns": 9, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T11:47:27.254Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 5, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T11:17:25.806Z" - }, - "switzerland-fedpol-news": { - "provider": "Swiss fedpol - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T21:59:30.032Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 5, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T21:59:30.032Z", - "lastEmptyAt": "2026-04-22T20:37:31.462Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T21:59:30.032Z" - } - ], - "cooldownUntil": "2026-04-24T21:59:30.032Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T21:59:30.032Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "telegraph-world-news": { - "provider": "The Telegraph a World News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 30, - "emptyRuns": 27, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 4, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T16:07:40.227Z", - "lastFailureAt": "2026-04-19T14:11:10.963Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T08:15:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 23, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T08:15:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "vox-pol-publications": { - "provider": "VOX-Pol Network a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "french-gendarmerie-news": { - "provider": "Gendarmerie Nationale - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "french-police-nationale-news": { - "provider": "Police Nationale - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ireland-gardai-press": { - "provider": "An Garda Siochana - Press Releases", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "netherlands-police-news": { - "provider": "Dutch National Police - News (EN)", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "paris-police-prefecture-news": { - "provider": "France24 - France (RSS)", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "portugal-pj-news": { - "provider": "Policia Judiciaria Portugal - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 43, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T15:59:44.503Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T19:18:33.309Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T15:59:44.503Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "portugal-psp-news": { - "provider": "The Portugal News - Crime", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "coe-counter-terrorism": { - "provider": "Council of Europe a Counter-Terrorism", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "echr-key-judgments-rss": { - "provider": "European Court of Human Rights - Key Judgments RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-22T17:39:27.641Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 60, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastEmptyAt": "2026-04-22T16:17:11.443Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 400", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 400", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "cooldownUntil": "2026-04-24T17:39:27.641Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T17:39:27.641Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "echr-press-releases-rss": { - "provider": "European Court of Human Rights - Press Releases RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "french-justice-ministry-news": { - "provider": "French Ministry of Justice - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "netherlands-prosecution-news": { - "provider": "Dutch Public Prosecution Service - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bfv-de-english": { - "provider": "BfV service page (Federal Office for the Protection of the Constitution)", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 56, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T11:07:28.674Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T11:07:28.674Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "dsn-at-english": { - "provider": "DSN Austria - Aktuelles", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "isd-global": { - "provider": "Institute for Strategic Dialogue (ISD) a Articles & Reports", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ocam-be-english": { - "provider": "CUTA (Belgium) threat analysis", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 19, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T16:07:40.227Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T22:54:57.851Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "pet-dk-english": { - "provider": "PET (Denmark) a English News", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "pst-no-english": { - "provider": "PST (Norway) English reporting page", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ran-network": { - "provider": "RUSI - Terrorism and Conflict", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "sapo-se-english": { - "provider": "Swedish Security Service English news", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "supo-fi-english": { - "provider": "SUPO Finland news and press releases", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "iom-news": { - "provider": "IOM (International Organization for Migration) a News", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "acled-updates": { - "provider": "ACLED a Updates and Analysis", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "aljazeera-news-rss": { - "provider": "Al Jazeera English a Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 24, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 5, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T10:13:21.253Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 3, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T11:55:25.806Z" - }, - "ap-top-news": { - "provider": "BBC News - Top Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-world": { - "provider": "BBC News a World", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-world-legacy": { - "provider": "BBC News a World (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bellingcat": { - "provider": "Bellingcat a Investigations", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chatham-house-rss": { - "provider": "Chatham House a Research & Commentary (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 7, - "emptyRuns": 11, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T14:03:06.243Z", - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 40, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chathamhouse-events": { - "provider": "Chatham House a Events (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chathamhouse-intl-security-feed": { - "provider": "Chatham House a International Security Programme (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 5, - "emptyRuns": 28, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T14:03:06.243Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 46, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chathamhouse-news-releases": { - "provider": "Chatham House a News Releases (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "counter-extremism-project-news": { - "provider": "Counter Extremism Project a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 5, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T12:14:24.733Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T21:04:21.166Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "crisis-group": { - "provider": "International Crisis Group a Research & Analysis", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "crisis-group-europe": { - "provider": "International Crisis Group a Europe (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "global-initiative-news": { - "provider": "Global Initiative Against Transnational Organized Crime a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "interpol-news-events": { - "provider": "INTERPOL a News and Events", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "just-security": { - "provider": "Just Security a Law, Rights & National Security", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 3, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T23:55:39.351Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T09:29:55.311Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T04:05:33.139Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T09:29:55.311Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lawfare-blog": { - "provider": "Just Security - National Security Analysis", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "long-war-journal": { - "provider": "Long War Journal a News Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 6, - "emptyRuns": 17, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", - "lastFailureAt": "2026-04-18T00:05:41.686Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 29, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nato-news-rss": { - "provider": "NATO a News (RSS)", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "occrp-news": { - "provider": "OCCRP a Organized Crime and Corruption Reporting Project", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "osce-press-releases": { - "provider": "OSCE a Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "resolve-network-research": { - "provider": "RESOLVE Network a Research", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 503", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "http-status-error", - "message": "HTTP 503", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Health score degraded to 17 after repeated failures", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "reuters-uk": { - "provider": "Reuters a UK News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rferl-security-news-rss": { - "provider": "Radio Free Europe/Radio Liberty a Security (RSS)", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - } - ], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "soufan-center-intelbrief": { - "provider": "The Soufan Center a IntelBrief", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tech-against-terrorism-podcast": { - "provider": "Tech Against Terrorism - Podcast", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tony-blair-institute-news": { - "provider": "Tony Blair Institute for Global Change a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unodc-news": { - "provider": "UNODC (UN Office on Drugs and Crime) a Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "war-on-the-rocks": { - "provider": "War on the Rocks a National Security & CT Analysis", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gctf-news": { - "provider": "Global Counterterrorism Forum (GCTF) a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unoct-news": { - "provider": "UN Office of Counter-Terrorism (UNOCT) - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "unsc-counter-terrorism-committee": { - "provider": "UN Security Council - Counter-Terrorism Committee (CTC) Updates", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gnet-artificial-intelligence-rss": { - "provider": "Global Network on Extremism & Technology (GNET) a Artificial Intelligence (RSS)", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 76, - "emptyRuns": 12, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T20:17:25.806Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 64, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T20:17:25.806Z" - }, - "gnet-radicalisation-rss": { - "provider": "Global Network on Extremism & Technology (GNET) a Radicalisation (RSS)", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-16T16:57:11.406Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T21:08:30.446Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gnet-youth-rss": { - "provider": "Global Network on Extremism & Technology (GNET) a Youth (RSS)", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-22T17:39:27.641Z", - "lastBuiltCount": 0, - "successfulRuns": 5, - "emptyRuns": 0, - "failedRuns": 10, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T08:04:04.612Z", - "lastFailureAt": "2026-04-22T17:39:27.641Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T11:07:28.674Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T12:15:37.169Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T22:00:46.520Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T17:16:47.386Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T17:39:27.641Z" - } - ], - "cooldownUntil": "2026-04-24T17:39:27.641Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T22:00:46.520Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T17:39:27.641Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tech-against-terrorism": { - "provider": "Tech Against Terrorism a Blog", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tech-against-terrorism-home": { - "provider": "Tech Against Terrorism - Home", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fatf-news": { - "provider": "Financial Action Task Force (FATF) a News", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "interpol-notices": { - "provider": "INTERPOL a Notices", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unsc-1267-press-releases": { - "provider": "UN Security Council - ISIL/Da'esh & Al-Qaeda Sanctions Committee Press Releases", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "unsc-consolidated-list": { - "provider": "UN Security Council - Consolidated Sanctions List Updates (RSS)", - "lane": "sanctions", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "barking-dagenham-council-news": { - "provider": "Barking and Dagenham Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 6, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "barnet-council-news": { - "provider": "Barnet Post", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "barts-health-news": { - "provider": "Barts Health NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T08:09:12.931Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 9, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T08:09:12.931Z", - "lastEmptyAt": "2026-04-23T05:47:56.833Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T08:09:12.931Z" - } - ], - "cooldownUntil": "2026-04-25T08:09:12.931Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-25T08:09:12.931Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-london-rss": { - "provider": "BBC News - London RSS", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 28, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 17, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-18T23:43:16.267Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 49, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bexley-council-news": { - "provider": "Bexley Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "brent-council-news": { - "provider": "Brent Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "bromley-council-news": { - "provider": "Bromley Council a Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "camden-council-news": { - "provider": "Camden Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "chelsea-westminster-news": { - "provider": "Chelsea and Westminster Hospital NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "city-of-london-police-fraud-reporting": { - "provider": "City of London Police - Fraud Reporting", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cnwl-news": { - "provider": "Central and North West London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "croydon-council-news": { - "provider": "Croydon Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ealing-council-news": { - "provider": "Ealing Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 57, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 29, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": "2026-04-18T21:09:53.488Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T21:09:53.488Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "east-london-nhs-news": { - "provider": "East London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "enfield-council-news": { - "provider": "Enfield Council a News and Events", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gosh-news": { - "provider": "Great Ormond Street Hospital a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "guys-st-thomas-news": { - "provider": "Guy's and St Thomas' NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hackney-council-news": { - "provider": "Hackney Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hammersmith-fulham-news": { - "provider": "Hammersmith and Fulham Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 6, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "haringey-council-news": { - "provider": "Haringey Community Press", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "harrow-council-news": { - "provider": "Harrow Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "havering-council-news": { - "provider": "Havering Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "heathrow-media-centre": { - "provider": "Heathrow a Media Centre", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hillingdon-council-news": { - "provider": "Hillingdon Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "homerton-healthcare-news": { - "provider": "Homerton Healthcare NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hounslow-council-news": { - "provider": "Hounslow Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "imperial-healthcare-news": { - "provider": "Imperial College Healthcare NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "islington-council-news": { - "provider": "Islington Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "kensington-chelsea-newsroom": { - "provider": "Royal Borough of Kensington and Chelsea a Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "kings-college-hospital-news": { - "provider": "King's College Hospital NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "kingston-council-news": { - "provider": "Kingston Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "lambeth-council-news": { - "provider": "Lambeth Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "lewisham-council-news": { - "provider": "Salamander News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lnwh-news": { - "provider": "London North West University Healthcare NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "london-ambulance-news": { - "provider": "London Ambulance Service a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-city-airport-media-centre": { - "provider": "London City Airport a Media Centre", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-councils-news": { - "provider": "London Councils a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-fire-brigade-news": { - "provider": "London Fire Brigade a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-gov-home": { - "provider": "London.gov.uk", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-gov-press-releases-html": { - "provider": "London.gov.uk - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-gov-rss-80603": { - "provider": "Greater London Authority a RSS Feed 80603", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "london-gov-rss-80632": { - "provider": "Greater London Authority a RSS Feed 80632", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "mayor-of-london-press-releases": { - "provider": "Mayor of London a Press Releases", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "merton-council-news": { - "provider": "Merton Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-21T08:24:19.478Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "met-police-the-met-tag": { - "provider": "Metropolitan Police - The Met Tag", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 76, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "moorfields-news": { - "provider": "Moorfields Eye Hospital NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "nelft-news": { - "provider": "North East London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "newham-council-news": { - "provider": "Newham Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "nhs-london-ncl-news": { - "provider": "NHS North Central London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nhs-london-nel-news": { - "provider": "NHS North East London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 67, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-21T10:07:46.576Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T10:07:46.576Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "nhs-london-nwl-news": { - "provider": "NHS North West London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "nhs-london-sel-news": { - "provider": "NHS South East London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nhs-london-swl-news": { - "provider": "NHS South West London a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "north-middlesex-news": { - "provider": "North Middlesex University Hospital a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "oxleas-news": { - "provider": "Oxleas NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "port-of-london-authority-news": { - "provider": "Port of London Authority a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "redbridge-council-news": { - "provider": "Redbridge Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "richmond-council-news": { - "provider": "Richmond Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 65, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "royal-free-london-news": { - "provider": "Royal Free London NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "royal-greenwich-news": { - "provider": "Royal Borough of Greenwich a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 6, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "slam-news": { - "provider": "South London and Maudsley NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "southwark-newsroom": { - "provider": "Southwark Council a Newsroom", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "st-georges-news": { - "provider": "St George's University Hospitals NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "sutton-council-news": { - "provider": "Sutton Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "swlstg-news": { - "provider": "South West London and St George's Mental Health NHS Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "tavistock-portman-news": { - "provider": "Tavistock and Portman NHS Foundation Trust a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tfl-press-releases": { - "provider": "Transport for London - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tfl-press-releases-html": { - "provider": "Transport for London - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tower-hamlets-council-news": { - "provider": "Tower Hamlets Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uclh-news": { - "provider": "University College London Hospitals a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 58, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-21T11:46:02.615Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "waltham-forest-council-news": { - "provider": "Waltham Forest Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "wandsworth-council-news": { - "provider": "Wandsworth Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 65, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "westminster-city-council-news": { - "provider": "Westminster City Council a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "whittington-health-news": { - "provider": "Whittington Health a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 5, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "city-of-london-police-news": { - "provider": "National Crime Agency - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "city-of-london-police-news-html": { - "provider": "City of London Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "city-of-london-police-newsroom": { - "provider": "Metropolitan Police Service - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-london": { - "provider": "Counter Terrorism Policing London", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "met-police-latest-news": { - "provider": "Metropolitan Police - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 106, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "met-police-news": { - "provider": "Metropolitan Police Service a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 106, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "london-assembly-press-releases": { - "provider": "London Assembly a Press Releases", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "mopac-html": { - "provider": "Mayor's Office for Policing and Crime", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-resilience": { - "provider": "Resilience First - Latest Updates", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T23:56:26.571Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 17, - "failedRuns": 4, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T23:56:26.571Z", - "lastEmptyAt": "2026-04-20T11:00:44.891Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-22T23:56:26.571Z" - } - ], - "cooldownUntil": "2026-04-24T23:56:26.571Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T23:56:26.571Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gov-uk-fcdo-travel-advice": { - "provider": "FCDO a Foreign Travel Advice Index", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-border-force": { - "provider": "Border Force (UK) a Announcements and Publications", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ukvi": { - "provider": "UK Visas and Immigration a Announcements and Publications", - "lane": "border", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "bbc-news-england-legacy": { - "provider": "BBC News a England (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 29, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 18, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-18T11:15:29.208Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 3, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-front-page-legacy": { - "provider": "BBC News a Front Page (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 15, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-uk": { - "provider": "BBC News a UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 26, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 16, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bbc-news-uk-politics-legacy": { - "provider": "BBC News a UK Politics (Legacy RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 4, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-17T09:48:51.002Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T03:30:54.684Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T15:59:44.503Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-19T03:30:54.684Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chatham-house-home": { - "provider": "Chatham House", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chatham-house-security-defence": { - "provider": "Chatham House - Security and Defence", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "essex-police-news": { - "provider": "Essex Police a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gov-uk-defence-intelligence": { - "provider": "UK Defence Intelligence a GOV.UK", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-terrorism-search": { - "provider": "GOV.UK Search - Terrorism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "guardian-uk": { - "provider": "The Guardian a UK News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T21:58:03.349Z", - "lastBuiltCount": 0, - "successfulRuns": 23, - "emptyRuns": 37, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-23T05:47:56.833Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-23T21:58:03.349Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T09:58:03.349Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 48, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:58:03.349Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "henry-jackson-society-news": { - "provider": "RUSI - Terrorism and Conflict", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hope-not-hate-home": { - "provider": "Hope not hate podcast", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "institute-global-home": { - "provider": "Institute for Global Change", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "kent-police-news": { - "provider": "Kent Police a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "mi5-news": { - "provider": "National Crime Agency - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "mi5-news-rss-direct": { - "provider": "MI5 - News RSS", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "national-crime-agency-news": { - "provider": "National Crime Agency a News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "npcc-releases": { - "provider": "National Police Chiefs' Council - Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-all-crime-leicester": { - "provider": "Police.uk - Street Crime Around Leicester", - "lane": "context", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 73, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-stops-force-leicestershire": { - "provider": "Police.uk - Force Stops (Leicestershire)", - "lane": "context", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-stops-street-leicester": { - "provider": "Police.uk - Street Stops Around Leicester", - "lane": "context", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "report-fraud-home": { - "provider": "Report Fraud", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "report-fraud-newsroom": { - "provider": "Report Fraud - Newsroom", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rusi-home": { - "provider": "RUSI", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T03:30:54.684Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T03:30:54.684Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-19T03:30:54.684Z", - "quarantineReason": "Health score degraded to 20 after repeated failures", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rusi-publications": { - "provider": "RUSI (Royal United Services Institute) a Publications", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rusi-terrorism-conflict": { - "provider": "RUSI - Terrorism and Conflict", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T03:29:13.488Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 11, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T12:14:24.733Z", - "lastEmptyAt": "2026-04-24T03:29:13.488Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T11:15:29.208Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T12:14:24.733Z" - } - ], - "cooldownUntil": "2026-04-24T15:29:13.488Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T21:04:21.166Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T15:29:13.488Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "skwawkbox": { - "provider": "Skwawkbox", - "lane": "context", - "kind": "playwright_html", - "lastCheckedAt": "2026-04-16T22:57:09.120Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T22:57:09.120Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T22:57:09.120Z" - } - ], - "cooldownUntil": "2026-04-24T09:24:00.000Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 32, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:24:00.000Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "sky-news-uk-rss": { - "provider": "Sky News UK a Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 35, - "emptyRuns": 38, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-21T11:46:02.615Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T20:17:25.806Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 64, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T20:17:25.806Z" - }, - "the-sun-all": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-sun-all-english": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-sun-homepage": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-sun-news-english": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-yorkshire-police-coroner-appeals-rss": { - "provider": "West Yorkshire Police - Coroner Appeals Feed", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 58, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-21T11:46:02.615Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "wiltshire-999s": { - "provider": "Wiltshire 999s", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "belfast-live": { - "provider": "Belfast Live", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 6, - "emptyRuns": 22, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 20, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T05:46:58.069Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 40, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "birmingham-mail": { - "provider": "Birmingham Mail", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "breaking-news-today": { - "provider": "Breaking News Today", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cambridge-news": { - "provider": "Cambridge News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "channel-4-news": { - "provider": "Channel 4 News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 12, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-19T17:13:24.435Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-20T11:00:44.891Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T00:08:15.005Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T03:57:52.244Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T08:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 10, - "quarantined": true, - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T08:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "consett-magazine": { - "provider": "Consett Magazine", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-echo": { - "provider": "Daily Echo", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-express": { - "provider": "Daily Express", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-mail-online": { - "provider": "Daily Mail Online - Popular Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 20, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 17, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T23:55:39.351Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T23:55:39.351Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-mirror": { - "provider": "Daily Mirror", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-politics": { - "provider": "Daily Politics", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T08:39:19.161Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T07:21:41.099Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T08:39:19.161Z" - } - ], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "deadline-news": { - "provider": "Deadline News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T03:29:13.488Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-24T03:29:13.488Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 500", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": "2026-04-24T15:29:13.488Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "quarantineReason": "Health score degraded to 20 after repeated failures", - "nextFetchAt": "2026-04-24T15:29:13.488Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "evening-standard": { - "provider": "Evening Standard", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 3, - "emptyRuns": 25, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 20, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T05:46:58.069Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 35, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "glasgow-times": { - "provider": "Glasgow Times", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "grimsby-telegraph": { - "provider": "Grimsby Telegraph", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "herald-scotland-news": { - "provider": "Herald Scotland - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "huffpost-uk": { - "provider": "HuffPost UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "larne-times": { - "provider": "Larne Times", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "manchester-evening-news": { - "provider": "Manchester Evening News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "metro": { - "provider": "BBC News - UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "news-uk": { - "provider": "News UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "pinknews": { - "provider": "PinkNews", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - } - ], - "cooldownUntil": "2026-04-24T20:17:25.806Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T20:17:25.806Z" - }, - "politics-co-uk": { - "provider": "Politics.co.uk", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "positive-news": { - "provider": "Positive News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "scottish-field": { - "provider": "Scottish Field", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "surgezirc-uk": { - "provider": "SurgeZirc UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T11:47:27.254Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 15, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastEmptyAt": "2026-04-23T08:09:12.931Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T14:11:10.963Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "cooldownUntil": "2026-04-25T11:47:27.254Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T08:04:04.612Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T11:47:27.254Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-argus-news": { - "provider": "The Argus", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-bolton-news": { - "provider": "The Bolton News - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "church-of-england-newspaper": { - "provider": "Church of England Newspaper", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 26, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 16, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T22:12:37.099Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-daily-mash": { - "provider": "The Daily Mash", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T22:53:56.180Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 10, - "failedRuns": 5, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T13:19:06.686Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - } - ], - "cooldownUntil": "2026-04-24T10:53:56.180Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T10:53:56.180Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "daily-record": { - "provider": "Daily Record", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "guardian-uk-top-stories": { - "provider": "The Guardian - UK Top Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 12, - "failedRuns": 3, - "consecutiveFailures": 3, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-18T11:15:29.208Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T23:43:16.267Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T06:30:13.977Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "independent-top-stories": { - "provider": "The Independent - Top Stories", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T20:18:46.625Z", - "lastBuiltCount": 0, - "successfulRuns": 4, - "emptyRuns": 39, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 10, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-19T16:03:49.134Z", - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-23T20:18:46.625Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": "2026-04-24T08:18:46.625Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T08:18:46.625Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northern-echo-news": { - "provider": "The Northern Echo - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-poke": { - "provider": "The Poke", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "scarborough-news": { - "provider": "The Scarborough News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-scotsman-news": { - "provider": "The Scotsman - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-scottish-sun": { - "provider": "The Scottish Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-sun": { - "provider": "The Sun", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-week-uk": { - "provider": "The Week UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 11, - "emptyRuns": 14, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T11:07:28.674Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-20T08:39:19.161Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T08:32:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 13, - "quarantined": true, - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T08:32:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-york-press-news": { - "provider": "The York Press - News", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "wales-online": { - "provider": "WalesOnline", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "a-lady-in-london": { - "provider": "A Lady in London", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T03:29:13.488Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T03:29:13.488Z", - "lastEmptyAt": "2026-04-23T22:53:56.180Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-24T03:29:13.488Z" - } - ], - "cooldownUntil": "2026-04-26T03:29:13.488Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T03:29:13.488Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "a-luxury-travel-blog": { - "provider": "A Luxury Travel Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "age-uk-discover": { - "provider": "Age UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "alan-malcher": { - "provider": "Alan Malcher", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "arcticdry": { - "provider": "ArcticDry", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 26, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 18, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-17T08:04:04.612Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T08:04:04.612Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "britishbeautyblogger": { - "provider": "British Beauty Blogger", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "buy-firewood-direct": { - "provider": "Buy Firewood Direct", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "carly-rowena": { - "provider": "Carly Rowena", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cherished-holiday-homes": { - "provider": "Cherished Holiday Homes", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "chique-home-living": { - "provider": "Chique Home Living", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "clubwise-blog": { - "provider": "ClubWise Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "disneyrollergirl": { - "provider": "Disneyrollergirl", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "elluminet-press": { - "provider": "9to5Mac", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Health score degraded to 20 after repeated failures", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "england-naturally": { - "provider": "England, Naturally", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 18, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-24T20:52:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 11, - "quarantined": true, - "quarantinedAt": "2026-04-23T03:28:47.210Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T20:52:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "evening-shire": { - "provider": "Evening Shire", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T20:18:46.625Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastEmptyAt": "2026-04-23T20:18:46.625Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "cooldownUntil": "2026-04-24T08:18:46.625Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T08:18:46.625Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "everything-zany": { - "provider": "Everything Zany", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T14:03:06.243Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "faded-spring": { - "provider": "Emily Underworld", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "fmcg-gurus": { - "provider": "FMCG Gurus", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 24, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 9, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T17:16:47.386Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T17:16:47.386Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T17:16:47.386Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-24T12:16:25.806Z" - }, - "foreign-office-blogs": { - "provider": "Foreign Office Blogs", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "fresh-design-blog": { - "provider": "Fresh Design Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ian-neate-blog": { - "provider": "9to5Mac", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "jollydeck": { - "provider": "JollyDeck", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lifestylelinked": { - "provider": "LifeStyleLinked", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "london-review-of-books": { - "provider": "London Review of Books", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "love-my-dress": { - "provider": "Love My Dress", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 18, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 520", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 11, - "quarantined": true, - "quarantinedAt": "2026-04-22T14:59:55.048Z", - "quarantineReason": "Health score degraded to 14 after repeated failures", - "nextFetchAt": "2026-04-24T10:21:25.806Z" - }, - "manic-mum-life": { - "provider": "Manic Mum Life", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T14:03:06.243Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "marie-claire-uk": { - "provider": "Marie Claire UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "office-breaks": { - "provider": "Office Breaks", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "on-the-think-of": { - "provider": "On The Think Of", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "quadrant2design-exhibiting-guides": { - "provider": "Quadrant2Design Exhibiting Guides", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T23:57:53.617Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 12, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastEmptyAt": "2026-04-23T23:57:53.617Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "cooldownUntil": "2026-04-24T11:57:53.617Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T11:57:53.617Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "really-ree": { - "provider": "Really Ree", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T18:02:43.923Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 23, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T18:02:43.923Z", - "lastEmptyAt": "2026-04-23T14:03:06.243Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 401", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-23T18:02:43.923Z" - } - ], - "cooldownUntil": "2026-04-25T18:02:43.923Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T18:02:43.923Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rocknroll-bride": { - "provider": "Rock n Roll Bride", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "semibold": { - "provider": "Semibold", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 3, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 13, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-18T07:21:41.099Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T07:21:41.099Z" - } - ], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "silly-old-sod": { - "provider": "Silly Old Sod", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 25, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 11, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "cooldownUntil": "2026-04-24T20:17:25.806Z", - "autoSkipReason": "empty-cooldown", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-20T04:05:33.139Z", - "quarantineReason": "Persistent timeouts — endpoint may be overloaded or unreachable", - "nextFetchAt": "2026-04-24T20:17:25.806Z" - }, - "silverspoon-london": { - "provider": "SilverSpoon London", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "sks-business-services": { - "provider": "SKS Business Services", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hnd-assignment-help-uk-medium": { - "provider": "Stories by HND Assignment Help UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "streetspace": { - "provider": "Streetspace", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T13:19:06.686Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "tenura": { - "provider": "Tenura", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "thank-you-for-the-days": { - "provider": "Thank you for the days", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 14, - "failedRuns": 4, - "consecutiveFailures": 2, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-19T14:11:10.963Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-17T08:04:04.612Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 401", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-curry-guy": { - "provider": "The Curry Guy", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "real-talk-uk": { - "provider": "The Real Talk UK", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "the-stratfordian": { - "provider": "The Stratfordian", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "training-express": { - "provider": "Training Express", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-constitutional-law-association": { - "provider": "UK Constitutional Law Association", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-fundraising-blog": { - "provider": "UK Fundraising", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-human-rights-blog": { - "provider": "UK Human Rights Blog", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "vershd": { - "provider": "Vershd", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "vuelio-uk": { - "provider": "Vuelio", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "avon-and-somerset-police-news-html": { - "provider": "Avon and Somerset Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "avon-somerset-police-news": { - "provider": "Avon & Somerset Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "bedfordshire-police-news": { - "provider": "Bedfordshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "bedfordshire-police-news-search": { - "provider": "Bedfordshire Police - News Search", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "british-transport-police-news": { - "provider": "British Transport Police Authority - News Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "btp-british-transport-police-news-html": { - "provider": "British Transport Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cambridgeshire-police-news-search": { - "provider": "Cambridgeshire Police - News Search", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cheshire-police-news": { - "provider": "Cheshire Constabulary - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cleveland-police-news": { - "provider": "Cleveland Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cps-news-centre": { - "provider": "Crown Prosecution Service a News Centre", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-north-west": { - "provider": "Counter Terrorism Policing North West", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-uk-latest-news": { - "provider": "Counter Terrorism Policing UK a Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-uk-rss-feed": { - "provider": "Counter Terrorism Policing UK - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T14:03:06.243Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T14:03:06.243Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-21T11:46:02.615Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-23T14:03:06.243Z" - } - ], - "cooldownUntil": "2026-04-25T14:03:06.243Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T14:03:06.243Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cumbria-police-news": { - "provider": "Cumbria Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "cumbria-police-newsroom": { - "provider": "Cumbria Police - Newsroom", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "derbyshire-police-news": { - "provider": "Derbyshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "devon-and-cornwall-police-newsroom": { - "provider": "Devon and Cornwall Police - Newsroom", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "devon-cornwall-police-news": { - "provider": "Devon and Cornwall Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dorset-police-news": { - "provider": "Dorset Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dorset-police-newsroom": { - "provider": "Dorset Police - Newsroom", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "durham-constabulary-news": { - "provider": "Durham Constabulary a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "durham-police-durham-news": { - "provider": "Durham Police - Durham News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dyfed-powys-police-news": { - "provider": "Dyfed-Powys Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "essex-police-news-html": { - "provider": "Essex Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gloucestershire-police-news": { - "provider": "Gloucestershire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gmp-news": { - "provider": "Greater Manchester Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "greater-manchester-police-news": { - "provider": "Greater Manchester Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gwent-police-news": { - "provider": "Gwent Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hampshire-police-news": { - "provider": "Hampshire & Isle of Wight Constabulary a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hertfordshire-police-news": { - "provider": "Hertfordshire Constabulary a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "humberside-police-news-search": { - "provider": "Humberside Police - News Search", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "kent-police-news-html": { - "provider": "Kent Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lancashire-constabulary-news": { - "provider": "Lancashire Constabulary a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "leicestershire-police-news": { - "provider": "National Crime Agency - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lincolnshire-police-news": { - "provider": "Lincolnshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "merseyside-police-news": { - "provider": "Merseyside Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "merseyside-police-news-html": { - "provider": "Merseyside Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "norfolk-constabulary-news": { - "provider": "Norfolk Constabulary - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "north-wales-police-news": { - "provider": "North Wales Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "north-yorkshire-police-news-html": { - "provider": "North Yorkshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northamptonshire-police-news-html": { - "provider": "Northamptonshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northumbria-police-news": { - "provider": "North East Bylines", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northumbria-police-northumbria-news": { - "provider": "Northumbria Police - Northumbria News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nottinghamshire-police-news": { - "provider": "Nottinghamshire Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nottinghamshire-police-nottinghamshire-news": { - "provider": "Nottinghamshire Police - Nottinghamshire News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "police-scotland-news": { - "provider": "Police Scotland news", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 30, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T19:32:35.264Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T00:05:41.686Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T00:05:41.686Z", - "quarantineReason": "Health score degraded to 23 after repeated failures", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "psni-latest-news": { - "provider": "Police Service of Northern Ireland - Latest News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "psni-news": { - "provider": "Police Service of Northern Ireland a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "south-wales-police-news": { - "provider": "South Wales Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "south-yorkshire-police-news": { - "provider": "South Yorkshire Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "staffordshire-police-news": { - "provider": "Staffordshire Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "staffordshire-police-staffordshire-news": { - "provider": "Staffordshire Police - Staffordshire News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "suffolk-constabulary-news": { - "provider": "Suffolk Constabulary - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "surrey-police-news": { - "provider": "Surrey Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "sussex-police-news": { - "provider": "Sussex Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "thames-valley-police-news": { - "provider": "Thames Valley Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "thames-valley-police-news-html": { - "provider": "Thames Valley Police - Thames Valley News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "warwickshire-police-news": { - "provider": "Warwickshire Connected - Latest Alerts", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 2, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — errors alternate between auth blocks and anti-bot; consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-mercia-police-news-html": { - "provider": "West Mercia Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-midlands-police-news": { - "provider": "West Midlands Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-yorkshire-police-all-rss": { - "provider": "West Yorkshire Police - All Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-police-appeals-rss": { - "provider": "West Yorkshire Police - Appeals Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-police-missing-rss": { - "provider": "West Yorkshire Police - Missing Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-yorkshire-police-news": { - "provider": "West Yorkshire Police a News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-21T11:46:02.615Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "west-yorkshire-police-news-appeals": { - "provider": "West Yorkshire Police - News Appeals", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-police-news-rss": { - "provider": "West Yorkshire Police - News Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-police-releases-rss": { - "provider": "West Yorkshire Police - Releases Feed", - "lane": "incidents", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 81, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 81, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "wiltshire-police-news": { - "provider": "Wiltshire Police - News", - "lane": "incidents", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "attorney-generals-office-html": { - "provider": "Attorney General's Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "cabinet-office-html": { - "provider": "Cabinet Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "cps-homepage": { - "provider": "Crown Prosecution Service", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "crown-office-news": { - "provider": "Crown Office and Procurator Fiscal Service - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "echr-uk-grand-chamber-rss": { - "provider": "European Court of Human Rights - UK Grand Chamber RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "extremism-commission-blog": { - "provider": "Commission for Countering Extremism - Blog", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "fcdo-html": { - "provider": "Foreign, Commonwealth & Development Office", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 76, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-scot-access-to-justice-latest": { - "provider": "Scottish Government - Access to Justice Latest", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-cabinet-office-atom": { - "provider": "Cabinet Office a GOV.UK Atom Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-hmcts": { - "provider": "HMCTS a Courts and Tribunals Announcements", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-hmic": { - "provider": "HM Inspectorate of Constabulary a GOV.UK", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gov-uk-home-office-atom": { - "provider": "UK Home Office a Atom Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-ipco": { - "provider": "Investigatory Powers Commissioner's Office a GOV.UK", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-mod-atom": { - "provider": "Ministry of Defence a GOV.UK Atom Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-moj-atom": { - "provider": "Ministry of Justice a GOV.UK Atom Feed", - "lane": "oversight", - "kind": "atom", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-news-and-communications-atom": { - "provider": "GOV.UK - News and Communications Atom", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 17, - "emptyRuns": 74, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 30, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-20T21:17:14.299Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-parliament-jcnss": { - "provider": "UK Parliament a Joint Committee on National Security Strategy", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "hmiprisons-news": { - "provider": "HM Inspectorate of Prisons - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hmiprobation-news": { - "provider": "HM Inspectorate of Probation - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "home-office-media-blog": { - "provider": "Home Office Media Blog", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "independent-reviewer-terrorism-legislation": { - "provider": "Independent Reviewer of Terrorism Legislation a Reports", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "independent-reviewer-terrorism-legislation-html": { - "provider": "Independent Reviewer of Terrorism Legislation", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "joint-committee-human-rights-html": { - "provider": "Joint Committee on Human Rights", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T19:31:23.009Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 15, - "failedRuns": 5, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T19:31:23.009Z", - "lastEmptyAt": "2026-04-23T18:02:43.923Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - }, - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T19:31:23.009Z" - } - ], - "cooldownUntil": "2026-04-25T19:31:23.009Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-25T19:31:23.009Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "judiciary-rss-feeds-page": { - "provider": "Judiciary UK - RSS Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "judiciary-uk-announcements-feed": { - "provider": "Judiciary UK - Announcements Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "judiciary-uk-judgments-feed": { - "provider": "Judiciary UK - Judgments Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "judiciary-uk-news": { - "provider": "Judiciary of England and Wales a News", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-22T16:17:11.443Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 34, - "failedRuns": 3, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T16:17:11.443Z", - "lastEmptyAt": "2026-04-22T14:59:55.048Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "Blocked by blocked access page", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-16T22:57:09.120Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-19T11:44:44.316Z" - }, - { - "category": "blocked-or-auth", - "message": "Blocked by blocked access page", - "at": "2026-04-22T16:17:11.443Z" - } - ], - "cooldownUntil": "2026-04-24T16:17:11.443Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T16:17:11.443Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "judiciary-uk-publications-feed": { - "provider": "Judiciary UK - Publications Feed", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "lords-in-focus-rss": { - "provider": "Hansard Society - Despatch Box", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "lords-library-notes-rss": { - "provider": "Hansard Society - Despatch Box", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ministry-of-defence-html": { - "provider": "Ministry of Defence", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ons-html": { - "provider": "Office for National Statistics", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "parliament-all-bills-rss": { - "provider": "Parliament - All Bills RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "parliament-private-bills-rss": { - "provider": "Parliament - Private Bills RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "parliament-public-bills-rss": { - "provider": "Parliament - Public Bills RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-ombudsman-current-investigations": { - "provider": "Police Ombudsman - Current Investigations", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "police-uk-crime-categories-2024-01": { - "provider": "Police.uk - Crime Categories (2024-01)", - "lane": "oversight", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-crimes-street-dates": { - "provider": "Police.uk - Street Crime Dataset Dates", - "lane": "oversight", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "police-uk-outcomes-at-location-1609590": { - "provider": "Police Data UK - Outcomes At Location API Docs", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "police-uk-outcomes-for-crime-e11dade0": { - "provider": "Police.uk - Outcomes For Crime e11dade0", - "lane": "oversight", - "kind": "json", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-fai-determinations-rss": { - "provider": "Scottish Courts - Fatal Accident Inquiry Determinations RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-fai-hearings-rss": { - "provider": "Scottish Courts - Fatal Accident Inquiry Hearings RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-high-court-justiciary-judgments-rss": { - "provider": "Scottish Courts - High Court of Justiciary Judgments RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-high-court-practice-notes-rss": { - "provider": "Scottish Courts - High Court of Justiciary Practice Notes RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-judgments-rss": { - "provider": "Scottish Courts - Judgments RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-news-articles-rss": { - "provider": "Scottish Courts - News Articles RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-publications-rss": { - "provider": "Scottish Courts - Publications RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scotcourts-rss-feeds-page": { - "provider": "Scottish Courts and Tribunals - RSS Feeds", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T03:28:47.210Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 65, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 1, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T03:28:47.210Z", - "lastEmptyAt": "2026-04-22T23:56:26.571Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T03:28:47.210Z" - } - ], - "cooldownUntil": "2026-04-25T03:28:47.210Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T03:28:47.210Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "scotcourts-sheriff-criminal-practice-notes-rss": { - "provider": "Scottish Courts - Sheriff Court Criminal Practice Notes RSS", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "scottish-government-justice-news": { - "provider": "Scottish Government - Justice and Safety", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "serious-fraud-office-news": { - "provider": "Serious Fraud Office a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 63, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T04:05:33.139Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-20T04:05:33.139Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-home-office": { - "provider": "UK Home Office a Announcements and Publications", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 101, - "emptyRuns": 4, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-19T18:05:04.781Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-iopc-news": { - "provider": "Independent Office for Police Conduct a News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ncsc-news": { - "provider": "National Cyber Security Centre (UK) a News", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 5, - "successfulRuns": 105, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ncsc-threat-reports": { - "provider": "National Cyber Security Centre (UK) a Threat Reports", - "lane": "oversight", - "kind": "rss", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 1, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-16T16:57:11.406Z", - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T21:08:30.446Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-business-news": { - "provider": "UK Parliament - Business News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-defence-committee": { - "provider": "UK Parliament a Defence Select Committee", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 68, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": "2026-04-23T08:09:12.931Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-foreign-affairs-committee": { - "provider": "UK Parliament a Foreign Affairs Select Committee", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-home-affairs-committee": { - "provider": "UK Parliament a Home Affairs Committee (News)", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T08:17:25.806Z", - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": "timeout", - "lastErrorMessage": "This operation was aborted", - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-24T08:17:25.806Z" - } - ], - "cooldownUntil": "2026-04-26T08:17:25.806Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T08:17:25.806Z" - }, - "uk-parliament-isc": { - "provider": "UK Parliament a Intelligence and Security Committee (Reports & News)", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 2, - "failedRuns": 6, - "consecutiveFailures": 4, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 4, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T21:04:21.166Z", - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T22:01:43.175Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T05:49:08.723Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-parliament-justice-committee": { - "provider": "UK Parliament a Justice Select Committee", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "act-campaign": { - "provider": "ACT Awareness Campaign", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "cheshire-police-alert": { - "provider": "Cheshire Police Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ct-policing-prevent-programme": { - "provider": "Counter Terrorism Policing - Prevent", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ct-policing-what-you-can-do": { - "provider": "Counter Terrorism Policing - What You Can Do", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "dc-police-community-messaging": { - "provider": "Dorset and Cornwall Police - Community Messaging", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "devon-cornwall-alerts": { - "provider": "Devon and Cornwall Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gnet-research": { - "provider": "Global Network on Extremism & Technology (GNET) a Main Feed", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 95, - "emptyRuns": 6, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T06:01:25.327Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 97, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T12:00:25.806Z" - }, - "gov-uk-contest-strategy": { - "provider": "GOV.UK a CONTEST Counter-Terrorism Strategy", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-counter-extremism-commissioner": { - "provider": "Counter Extremism Commissioner a GOV.UK", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 77, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T19:01:30.233Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T19:01:30.233Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-prevent-strategy": { - "provider": "UK Home Office - Prevent duty guidance", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-report-terrorism": { - "provider": "GOV.UK - Report Terrorism", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gov-uk-terrorism-national-emergency": { - "provider": "GOV.UK - Terrorism National Emergency", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "icsr-kcl": { - "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "met-office-seasonal-advice": { - "provider": "Met Office - Seasonal Advice", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "mi5-terrorism-threat-levels": { - "provider": "MI5 - Terrorism Threat Levels", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "mi5-uk-threat-level": { - "provider": "MI5 (Security Service) a UK Threat Level", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "my-community-alert": { - "provider": "My Community Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-23T11:47:27.254Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 45, - "failedRuns": 2, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T11:47:27.254Z", - "lastEmptyAt": "2026-04-23T10:13:21.253Z", - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-18T19:28:57.337Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "Playwright browser not installed: browserType.launch: Executable doesn't exist at /home/runner/.cache/ms-playwright/chromium_headless_shell-1217/chrome-headless-shell-linux64/chrome-headless-shell\n╔════════════════════════════════════════════════════════════╗\n║ Looks like Playwright was just installed or updated. ║\n║ Please run the following command to download new browsers: ║\n║ ║\n║ npx playwright install ║\n║ ║\n║ <3 Playwright Team ║\n╚════════════════════════════════════════════════════════════╝", - "at": "2026-04-23T11:47:27.254Z" - } - ], - "cooldownUntil": "2026-04-25T11:47:27.254Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-25T11:47:27.254Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "north-wales-community-alert": { - "provider": "North Wales Community Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T03:29:13.488Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 41, - "failedRuns": 4, - "consecutiveFailures": 1, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-24T03:29:13.488Z", - "lastEmptyAt": "2026-04-23T23:57:53.617Z", - "lastErrorCategory": "http-status-error", - "lastErrorMessage": "HTTP 429", - "recentErrors": [ - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-17T05:46:58.069Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-20T23:15:54.554Z" - }, - { - "category": "http-status-error", - "message": "HTTP 429", - "at": "2026-04-24T03:29:13.488Z" - } - ], - "cooldownUntil": "2026-04-26T03:29:13.488Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-26T03:29:13.488Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "northamptonshire-talking": { - "provider": "Northamptonshire Talking", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "npsa-blog": { - "provider": "NPSA - Blog", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "npsa-blog-news": { - "provider": "NPSA - Blog News", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "npsa-national-protective-security-authority": { - "provider": "NPSA - Activity on GOV.UK", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "protectuk": { - "provider": "ProtectUK (NPSA) a Protective Security Guidance", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "south-yorkshire-police-alerts": { - "provider": "South Yorkshire Police Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "stay-in-the-know-home": { - "provider": "Stay In The Know - Community Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "stay-in-the-know-latest-alerts": { - "provider": "Stay In The Know - Latest Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 58, - "failedRuns": 2, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ncsc-all-rss": { - "provider": "UK NCSC - All Updates RSS", - "lane": "prevention", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 14, - "emptyRuns": 75, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ncsc-homepage": { - "provider": "UK NCSC - Homepage", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "uk-prevent-duty-guidance": { - "provider": "GOV.UK a Prevent Duty Guidance (Collection)", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-midlands-community-alerts": { - "provider": "WMNow - Community Alerts", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "west-yorkshire-community-alert": { - "provider": "West Yorkshire Community Alert", - "lane": "prevention", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 59, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-19T17:13:24.435Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T17:13:24.435Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "gov-uk-proscribed-terrorist-orgs": { - "provider": "GOV.UK a Proscribed Terrorist Organisations", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "hm-treasury-html": { - "provider": "HM Treasury", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "ofsi-blog-home": { - "provider": "OFSI - Blog", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "otsi-blog-home": { - "provider": "OTSI - Blog", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 1, - "successfulRuns": 101, - "emptyRuns": 4, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": "2026-04-19T18:05:04.781Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-ofsi-blog": { - "provider": "Office of Financial Sanctions Implementation (OFSI) a Blog", - "lane": "sanctions", - "kind": "rss", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 2, - "successfulRuns": 105, - "emptyRuns": 0, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T08:17:25.806Z", - "lastFailureAt": null, - "lastEmptyAt": null, - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 100, - "quarantined": false, - "quarantinedAt": null, - "quarantineReason": null, - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "uk-sanctions-list": { - "provider": "UK Sanctions List (FCDO) a Consolidated List (XML Service)", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "ctc-sentinel": { - "provider": "Combating Terrorism Center at West Point - CTC Sentinel", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" + }, + { + "terms": [ + "canada", + "canadian" + ], + "label": "Canada", + "kind": "country", + "precision": "low", + "lat": 56.1304, + "lng": -106.3468 + }, + { + "terms": [ + "australia", + "australian" + ], + "label": "Australia", + "kind": "country", + "precision": "low", + "lat": -25.2744, + "lng": 133.7751 + } + ], + "buildWarning": null, + "runMetrics": { + "schedulerMode": "candidate", + "htmlBudget": 40, + "htmlDomainCapPerRun": 3, + "htmlDomainUsage": {}, + "coverage": { + "eligible": 4, + "scheduled": 4, + "initialScheduled": 1, + "continuationAttempted": 3, + "checked": 4, + "eligibleCheckedRate": 1, + "scheduledCheckedRate": 1 + }, + "freshnessSlaByTier": { + "high": { + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 }, - "dhs-press-releases": { - "provider": "US Department of Homeland Security - News", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" + "medium": { + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 + } + }, + "failureReasons": { + "success": 2 + }, + "sourceRunStats": { + "totalConfiguredSources": 4, + "sourcesCheckedThisRun": 4, + "sourcesUpdatedThisRun": 2, + "sourcesFailedThisRun": 0, + "sourcesUnchangedThisRun": 0 + }, + "runDurationMs": 270, + "playwrightFallback": { + "attempts": 0, + "successes": 0, + "maxAttempts": 4, + "timeoutMs": 12000 + }, + "guardrails": { + "maxRuntimeMs": 720000, + "maxFailedSourceRate": 0.65, + "minSuccessfulSources": 1, + "targetSuccessfulSourcesPerRun": 1, + "failedSourceRate": 0, + "successfulSources": 2, + "violations": [], + "midRun": { + "throttleLevel": 0, + "totalAttempted": 4, + "totalFailed": 0, + "totalSuccessful": 2, + "failedRate": 0, + "successRate": 0.5, + "avgSourceDurationMs": 62, + "criticalOnly": false, + "skipPlaywright": false, + "transitions": [] + } + } + }, + "health": { + "expectedRefreshMinutes": 30, + "staleAfterMinutes": 50, + "lastAttemptedRefreshTime": "2026-04-24T15:44:02.370Z", + "usedFallback": false, + "lastSuccessfulRefreshTime": "2026-04-24T15:44:02.370Z", + "lastSuccessfulRunId": "24898212731", + "lastSuccessfulRunNumber": "372", + "lastSuccessfulRunAttempt": "1", + "lastSuccessfulHeadSha": "6be03a0e77bf85a07493ff66d07a4d0d48446d72", + "lastSuccessfulEvent": "dynamic", + "lastSuccessfulSourceCount": 4, + "sourceErrorCount": 0, + "hasWarnings": false, + "autoDeferredSourceCount": 0, + "autoDeferredSources": [], + "operationalDeferredSourceCount": 0, + "operationalDeferredSources": [], + "sourceRunStats": { + "totalConfiguredSources": 4, + "sourcesCheckedThisRun": 4, + "sourcesUpdatedThisRun": 2, + "sourcesFailedThisRun": 0, + "sourcesUnchangedThisRun": 0 + }, + "extraMetrics": { + "schedulerMode": "candidate", + "coverage": { + "eligible": 4, + "scheduled": 4, + "initialScheduled": 1, + "continuationAttempted": 3, + "checked": 4, + "eligibleCheckedRate": 1, + "scheduledCheckedRate": 1 }, - "dni-press-releases": { - "provider": "Office of the Director of National Intelligence - Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" + "freshnessSlaByTier": { + "high": { + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 + }, + "medium": { + "count": 1, + "avgMinutes": 0, + "p95Minutes": 0 + } }, - "doj-nsd-press-releases": { - "provider": "U.S. Department of Justice - National Security Division Press Releases", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 22, - "failedRuns": 4, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 22, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-20T06:30:13.977Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T15:11:26.228Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-18T05:49:08.723Z" - }, - { - "category": "not-found-404", - "message": "HTTP 404", - "at": "2026-04-20T06:30:13.977Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-16T16:57:11.406Z", - "quarantineReason": "Endpoint likely removed — all recent errors are HTTP 404", - "nextFetchAt": "2026-04-24T09:17:25.806Z" + "failureReasons": { + "success": 2 }, - "fbi-national-press-releases": { - "provider": "FBI - National Press Releases (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" + "sourceRunStats": { + "totalConfiguredSources": 4, + "sourcesCheckedThisRun": 4, + "sourcesUpdatedThisRun": 2, + "sourcesFailedThisRun": 0, + "sourcesUnchangedThisRun": 0 }, - "fbi-stories": { - "provider": "FBI - Top Stories (RSS)", - "lane": "context", - "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "blocked-or-auth", - "lastErrorMessage": "HTTP 403", - "recentErrors": [ - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "blocked-or-auth", - "message": "HTTP 403", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Access protection added — consistent 401/403 blocks; consider new endpoint", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" + "playwrightFallback": { + "attempts": 0, + "successes": 0 }, - "fbi-top-stories": { - "provider": "FBI - Top Stories (RSS)", - "lane": "context", + "guardrailViolations": [], + "midRunGuardrail": { + "throttleLevel": 0, + "totalAttempted": 4, + "totalFailed": 0, + "totalSuccessful": 2, + "failedRate": 0, + "successRate": 0.5, + "avgSourceDurationMs": 62, + "criticalOnly": false, + "skipPlaywright": false, + "transitions": [] + } + }, + "sourceHealth": { + "fixture-rss-incidents": { + "provider": "Fixture Incidents Feed", + "lane": "incidents", "kind": "rss", - "lastCheckedAt": "2026-04-23T10:13:21.253Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 0, - "failedRuns": 7, - "consecutiveFailures": 7, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-23T10:13:21.253Z", - "lastEmptyAt": null, - "lastErrorCategory": "brittle-selectors-or-js-rendering", - "lastErrorMessage": "No items parsed from source payload", - "recentErrors": [ - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-19T10:46:47.709Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-21T08:24:19.478Z" - }, - { - "category": "brittle-selectors-or-js-rendering", - "message": "No items parsed from source payload", - "at": "2026-04-23T10:13:21.253Z" - } - ], - "cooldownUntil": "2026-04-25T10:13:21.253Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "HTML structure changed — selectors no longer match; needs parser update", - "nextFetchAt": "2026-04-25T10:13:21.253Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "gw-program-extremism": { - "provider": "George Washington University - Program on Extremism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T06:01:25.327Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 21, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 21, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T06:01:25.327Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": "2026-04-24T18:01:25.327Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 17, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T18:01:25.327Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "nsa-cybersecurity-news": { - "provider": "NSA - Cybersecurity Advisories & Guidance", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, - "failedRuns": 0, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "rand-terrorism-topic": { - "provider": "RAND - Terrorism Topic Updates", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "lastCheckedAt": "2026-04-24T15:44:02.370Z", "lastBuiltCount": 0, "successfulRuns": 0, "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 5, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "rewards-for-justice": { - "provider": "U.S. Department of State - Rewards for Justice", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, + "consecutiveEmptyRuns": 1, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": "2026-04-24T15:44:02.370Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, + "healthScore": 77, + "quarantined": false, "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "start-baad-database": { - "provider": "National Consortium for the Study of Terrorism (START) - Big Allied and Dangerous (BAAD) Database", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" + "quarantineReason": null, + "nextFetchAt": "2026-04-24T16:41:02.370Z" }, - "start-center-publications": { - "provider": "START Center (UMD) - News & Publications", + "fixture-rss-context": { + "provider": "Fixture Context Feed", "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", + "kind": "rss", + "lastCheckedAt": "2026-04-24T15:44:02.370Z", "lastBuiltCount": 0, "successfulRuns": 0, "emptyRuns": 1, - "failedRuns": 6, - "consecutiveFailures": 5, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": "2026-04-16T19:01:30.233Z", - "lastErrorCategory": "network-failure", - "lastErrorMessage": "fetch failed", - "recentErrors": [ - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:04:21.166Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-16T21:58:32.608Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-18T03:42:22.439Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-19T18:05:04.781Z" - }, - { - "category": "network-failure", - "message": "fetch failed", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-18T03:42:22.439Z", - "quarantineReason": "Persistent network failures — DNS/connection issues; infrastructure may be down", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "state-dept-terrorism": { - "provider": "US State Department - Bureau of Counterterrorism", - "lane": "context", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, + "consecutiveEmptyRuns": 1, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": "2026-04-24T15:44:02.370Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, + "healthScore": 77, + "quarantined": false, "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" + "quarantineReason": null, + "nextFetchAt": "2026-04-24T18:21:02.370Z" }, - "cisa-cybersecurity-advisories": { - "provider": "CISA - Cybersecurity Alerts & Advisories", + "fixture-atom-oversight": { + "provider": "Fixture Oversight Feed", "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 13, - "emptyRuns": 76, + "kind": "atom", + "lastCheckedAt": "2026-04-24T15:44:02.370Z", + "lastBuiltCount": 1, + "successfulRuns": 1, + "emptyRuns": 0, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 75, + "consecutiveEmptyRuns": 0, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-17T14:10:24.787Z", + "lastSuccessfulAt": "2026-04-24T15:44:02.370Z", "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": null, "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, + "healthScore": 90, + "quarantined": false, "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" + "quarantineReason": null, + "nextFetchAt": "2026-04-24T16:22:02.370Z" }, - "us-house-homeland-security": { - "provider": "US House Committee on Homeland Security - News", - "lane": "oversight", - "kind": "html", - "lastCheckedAt": "2026-04-22T14:59:55.048Z", - "lastBuiltCount": 0, - "successfulRuns": 0, + "fixture-json-prevention": { + "provider": "Fixture Prevention Feed", + "lane": "prevention", + "kind": "json", + "lastCheckedAt": "2026-04-24T15:44:02.370Z", + "lastBuiltCount": 1, + "successfulRuns": 1, "emptyRuns": 0, - "failedRuns": 6, - "consecutiveFailures": 6, - "consecutiveEmptyRuns": 0, - "consecutiveBlockedFailures": 6, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-22T14:59:55.048Z", - "lastEmptyAt": null, - "lastErrorCategory": "anti-bot-protection", - "lastErrorMessage": "Blocked by anti-bot protection", - "recentErrors": [ - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T16:57:11.406Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-16T19:01:30.233Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-17T22:12:37.099Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-19T19:32:35.264Z" - }, - { - "category": "anti-bot-protection", - "message": "Blocked by anti-bot protection", - "at": "2026-04-22T14:59:55.048Z" - } - ], - "cooldownUntil": "2026-04-24T14:59:55.048Z", - "autoSkipReason": "health-deprioritised", - "healthScore": 0, - "quarantined": true, - "quarantinedAt": "2026-04-17T22:12:37.099Z", - "quarantineReason": "Anti-bot protection active — consider Playwright fallback or new endpoint", - "nextFetchAt": "2026-04-24T14:59:55.048Z", - "lastDeferredAt": "2026-04-24T08:17:25.806Z" - }, - "us-treasury-ofac-press-releases": { - "provider": "U.S. Treasury (OFAC) - Press Releases", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 79, - "failedRuns": 1, - "consecutiveFailures": 0, - "consecutiveEmptyRuns": 79, - "consecutiveBlockedFailures": 0, - "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, - "lastFailureAt": "2026-04-16T15:11:26.228Z", - "lastEmptyAt": "2026-04-24T08:17:25.806Z", - "lastErrorCategory": null, - "lastErrorMessage": null, - "recentErrors": [ - { - "category": "timeout", - "message": "This operation was aborted", - "at": "2026-04-16T15:11:26.228Z" - } - ], - "cooldownUntil": null, - "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, - "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" - }, - "us-treasury-ofac-recent-actions": { - "provider": "U.S. Treasury (OFAC) - Recent Actions", - "lane": "sanctions", - "kind": "html", - "lastCheckedAt": "2026-04-24T08:17:25.806Z", - "lastBuiltCount": 0, - "successfulRuns": 0, - "emptyRuns": 80, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 80, + "consecutiveEmptyRuns": 0, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": null, + "lastSuccessfulAt": "2026-04-24T15:44:02.370Z", "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T08:17:25.806Z", + "lastEmptyAt": null, "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 0, - "quarantined": true, + "healthScore": 90, + "quarantined": false, "quarantinedAt": null, - "quarantineReason": "Low health score – needs review", - "nextFetchAt": "2026-04-24T09:17:25.806Z" + "quarantineReason": null, + "nextFetchAt": "2026-04-24T19:12:02.370Z" } } } diff --git a/source-quarantine.html b/source-quarantine.html index df1bcf8c..742ea380 100644 --- a/source-quarantine.html +++ b/source-quarantine.html @@ -269,13 +269,13 @@

Source Quarantine Review

- Generated: 2026-04-24T08:17:25.806Z - Low-health sources: 529 + Generated: 2026-04-24T15:44:02.370Z + Low-health sources: 0 Pending suggestions: 0 SLA: deprioritised, auto-recheck 24h+ - New this week: 231 - Avg health score: 3/100 - Avg time in quarantine: 153h + New this week: 0 + Avg health score: 0/100 + Avg time in quarantine: 0h Re-quarantine rate: 0%
@@ -455,7 +455,7 @@

Feed Audit

? 'Data mode: live API (restore enabled)' : 'Data mode: live read-only (restore unavailable)'; meta.innerHTML = [ - 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T08:17:25.806Z') + '', + 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T15:44:02.370Z') + '', 'Low-health sources: ' + escapeHtml(currentEntries.length) + '', 'Pending suggestions: ' + escapeHtml(currentSuggestions.length) + '', 'SLA: deprioritised, auto-recheck 24h+', From 01ff658ee64d52234d21f86b22f116b327df2789 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:47:18 +0000 Subject: [PATCH 07/25] Update restored source endpoints in trusted catalog Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/a6ef3658-00ee-4153-bbb0-89b02f29c930 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 128 ++++++++++++------------ data/sources/eu/context.json | 48 ++++----- data/sources/eu/incidents.json | 6 +- data/sources/europe/context.json | 12 +-- data/sources/international/context.json | 14 +-- data/sources/uk/context.json | 36 +++---- data/sources/uk/prevention.json | 6 +- data/sources/us/context.json | 6 +- 8 files changed, 128 insertions(+), 128 deletions(-) diff --git a/data/sources.json b/data/sources.json index b784c3e2..3c091c40 100644 --- a/data/sources.json +++ b/data/sources.json @@ -98,13 +98,13 @@ { "id": "ecfr-feeds-index", "provider": "ECFR - Feeds", - "endpoint": "https://ecfr.eu/feeds/", - "kind": "html", + "endpoint": "https://ecfr.eu/feed/", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "ECFR feed index page for European foreign-policy and security research feed discovery." + "comment": "ECFR main RSS feed endpoint." }, { "id": "enisa-news", @@ -119,15 +119,15 @@ "refreshEveryHours": 1 }, { - "id": "enisa-rss-transition-page", - "provider": "ENISA - RSS Feeds Transition Notice", - "endpoint": "https://www.enisa.europa.eu/rss-feeds-discontinued-new-subscription-mechanism-coming-soon", - "kind": "html", + "id": "cert-eu-security-advisories-rss", + "provider": "CERT-EU - Security Advisories (RSS)", + "endpoint": "https://cert.europa.eu/publications/security-advisories-rss", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "ENISA notice page documenting RSS feed changes and subscription transition.", + "requiresKeywordMatch": true, + "comment": "Active CERT-EU security advisories RSS replacing ENISA RSS-discontinued notice page.", "refreshEveryHours": 1 }, { @@ -155,13 +155,13 @@ { "id": "eurojust-press-news-html", "provider": "Eurojust - Press Releases and News", - "endpoint": "https://www.eurojust.europa.eu/media-and-events/press-releases-and-news", - "kind": "html", + "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Eurojust press and news page for prosecutions, judicial cooperation and terrorism-case updates.", + "comment": "Official Eurojust press releases/news RSS feed.", "refreshEveryHours": 1 }, { @@ -179,13 +179,13 @@ { "id": "europol-media-press", "provider": "Europol a Media and Press", - "endpoint": "https://www.europol.europa.eu/media-press", - "kind": "html", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Europol media and press releases page; no dedicated RSS endpoint, using the listing page with keyword filtering.", + "comment": "Official Europol newsroom RSS feed.", "refreshEveryHours": 1 }, { @@ -203,25 +203,25 @@ { "id": "europol-newsroom-html", "provider": "Europol - Newsroom", - "endpoint": "https://www.europol.europa.eu/media-press/newsroom", - "kind": "html", + "endpoint": "https://www.europol.europa.eu/rss.xml", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Europol newsroom page variant for press releases, operational updates and EU policing statements.", + "comment": "Alternative Europol RSS feed to avoid JS-heavy newsroom pages.", "refreshEveryHours": 1 }, { "id": "finland-supo-news", "provider": "Finnish Security Intelligence Service - News", - "endpoint": "https://supo.fi/en/current-issues", - "kind": "html", + "endpoint": "https://supo.fi/en/news-and-press-releases/-/asset_publisher/LVkvGHGkmM3J/rss", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Finnish Supo updates on terrorism, extremism and hostile-state security concerns.", + "comment": "Official Finnish Security and Intelligence Service RSS feed.", "refreshEveryHours": 1 }, { @@ -298,13 +298,13 @@ { "id": "statewatch-news", "provider": "Statewatch - News", - "endpoint": "https://www.statewatch.org/news/", - "kind": "html", + "endpoint": "https://www.statewatch.org/news/rssfeed", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Statewatch news page for civil-liberties, policing, borders and counter-terror policy scrutiny." + "comment": "Direct Statewatch news RSS feed." }, { "id": "sweden-sapo-news", @@ -395,13 +395,13 @@ { "id": "finland-police-news", "provider": "Finnish Police - News", - "endpoint": "https://poliisi.fi/en/news", - "kind": "html", + "endpoint": "https://poliisi.fi/en/national-bureau-of-investigation/-/asset_publisher/ZtAEeHB39Lxr/rss", + "kind": "rss", "lane": "incidents", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Finnish Police updates on major incidents, terror-related investigations and national policing operations.", + "comment": "Finnish NBI RSS feed for serious crime and CT-relevant police updates.", "refreshEveryHours": 1 }, { @@ -914,13 +914,13 @@ { "id": "ecfr-publications", "provider": "European Council on Foreign Relations (ECFR) a Publications", - "endpoint": "https://ecfr.eu/publications/", - "kind": "html", + "endpoint": "https://ecfr.eu/feed/?post_type=publication", + "kind": "rss", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "ECFR research and commentary on European security, terrorism, and foreign policy used as specialist context." + "comment": "Direct ECFR publications feed." }, { "id": "euronews-europe", @@ -1016,13 +1016,13 @@ { "id": "politico-europe", "provider": "Politico Europe", - "endpoint": "https://www.politico.eu/", - "kind": "html", + "endpoint": "https://www.politico.eu/feed/", + "kind": "rss", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Politico Europe used as corroborating political-security context rather than live trigger input." + "comment": "Politico Europe RSS feed for context coverage." }, { "id": "rte-ireland-news-rss", @@ -1334,13 +1334,13 @@ { "id": "acled-updates", "provider": "ACLED a Updates and Analysis", - "endpoint": "https://acleddata.com/", + "endpoint": "https://acleddata.com/global-analysis", "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "ACLED provides conflict event reporting and analysis; RSS varies by section, so the main site is used with keyword filtering." + "comment": "Focused ACLED global analysis page; official RSS is not consistently available." }, { "id": "aljazeera-news-rss", @@ -1598,13 +1598,13 @@ { "id": "soufan-center-intelbrief", "provider": "The Soufan Center a IntelBrief", - "endpoint": "https://thesoufancenter.org/category/intelbrief/", - "kind": "html", + "endpoint": "https://thesoufancenter.org/category/intelbrief/feed/", + "kind": "rss", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "No official RSS link advertised; using the IntelBrief category page and relying on keyword filtering." + "comment": "WordPress category RSS feed for Soufan IntelBrief." }, { "id": "tech-against-terrorism-podcast", @@ -1620,13 +1620,13 @@ { "id": "tony-blair-institute-news", "provider": "Tony Blair Institute for Global Change a Publications", - "endpoint": "https://institute.global/insights", + "endpoint": "https://institute.global/insights/geopolitics-and-security", "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "TBI publications on counter-extremism, technology and political violence used for strategic context." + "comment": "Focused TBI geopolitics and security page for relevant context." }, { "id": "unodc-news", @@ -2849,24 +2849,24 @@ { "id": "bbc-news-uk-politics-legacy", "provider": "BBC News a UK Politics (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/uk_politics/rss.xml", + "endpoint": "https://feeds.bbci.co.uk/news/politics/rss.xml", "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Legacy BBC RSS feed (newsrss.bbc.co.uk). May be discontinued; retained for UK political coverage." + "comment": "Modern BBC Politics RSS endpoint replacing the legacy newsrss host." }, { "id": "chatham-house-home", "provider": "Chatham House", - "endpoint": "https://www.chathamhouse.org/", - "kind": "html", + "endpoint": "https://www.chathamhouse.org/path/whatsnew.xml", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Chatham House homepage for international security, state threat and terrorism-adjacent analysis." + "comment": "Official Chatham House all-content RSS feed." }, { "id": "chatham-house-security-defence", @@ -2950,13 +2950,13 @@ { "id": "institute-global-home", "provider": "Institute for Global Change", - "endpoint": "https://www.institute.global/", + "endpoint": "https://institute.global/insights/geopolitics-and-security", "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Tony Blair Institute homepage for extremism, geopolitical and public-policy context." + "comment": "Focused TBI geopolitics and security page used for relevant strategic context." }, { "id": "kent-police-news", @@ -3150,7 +3150,7 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "The Sun aggregate feed; tabloid – strict keyword and terrorism-hit thresholds apply before inclusion." + "comment": "The Sun aggregate feed; tabloid – strict keyword and terrorism-hit thresholds apply before inclusion." }, { "id": "the-sun-all-english", @@ -3161,7 +3161,7 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "The Sun all English app feed; tabloid – strict keyword and terrorism-hit thresholds apply before inclusion." + "comment": "The Sun all English app feed; tabloid – strict keyword and terrorism-hit thresholds apply before inclusion." }, { "id": "the-sun-homepage", @@ -3172,7 +3172,7 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "The Sun curated homepage feed; tabloid – strict keyword and terrorism-hit thresholds apply before inclusion." + "comment": "The Sun curated homepage feed; tabloid – strict keyword and terrorism-hit thresholds apply before inclusion." }, { "id": "the-sun-news-english", @@ -3183,7 +3183,7 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "The Sun English news app feed; tabloid – strict keyword and terrorism-hit thresholds apply before inclusion." + "comment": "The Sun English news app feed; tabloid – strict keyword and terrorism-hit thresholds apply before inclusion." }, { "id": "west-yorkshire-police-coroner-appeals-rss", @@ -3200,13 +3200,13 @@ { "id": "wiltshire-999s", "provider": "Wiltshire 999s", - "endpoint": "https://www.wiltshire999s.co.uk/", - "kind": "html", + "endpoint": "https://www.wiltshire999s.co.uk/news/feed/", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Wiltshire emergency services news site for local incident corroboration and public reporting." + "comment": "Wiltshire emergency services news RSS feed." }, { "id": "belfast-live", @@ -3250,7 +3250,7 @@ { "id": "cambridge-news", "provider": "Cambridge News", - "endpoint": "https://www.cambridge-news.co.uk/rss.xml", + "endpoint": "https://www.cambridge-news.co.uk/news/?service=rss", "kind": "rss", "lane": "context", "region": "uk", @@ -3258,7 +3258,7 @@ "requiresKeywordMatch": true, "sourceTier": "context", "reliabilityProfile": "general_media", - "comment": "Cambridgeshire local news RSS." + "comment": "Reach/Live-style Cambridge News RSS endpoint." }, { "id": "channel-4-news", @@ -3458,7 +3458,7 @@ { "id": "metro", "provider": "BBC News - UK", - "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml?source=metro", + "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml", "kind": "rss", "lane": "context", "region": "uk", @@ -3466,7 +3466,7 @@ "requiresKeywordMatch": true, "sourceTier": "context", "reliabilityProfile": "major_media", - "comment": "Replacement for anti-bot Metro feed using BBC UK RSS coverage." + "comment": "BBC UK RSS without legacy query baggage." }, { "id": "news-uk", @@ -5982,13 +5982,13 @@ { "id": "icsr-kcl", "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", - "endpoint": "https://icsr.info/", - "kind": "html", + "endpoint": "https://icsr.info/category/publications/reports/feed/", + "kind": "rss", "lane": "prevention", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "ICSR content is published as web pages; RSS availability varies by section." + "comment": "ICSR reports RSS feed." }, { "id": "met-office-seasonal-advice", @@ -6384,13 +6384,13 @@ { "id": "rand-terrorism-topic", "provider": "RAND - Terrorism Topic Updates", - "endpoint": "https://www.rand.org/topics/terrorism.html", - "kind": "html", + "endpoint": "https://www.rand.org/pubs/new.xml", + "kind": "rss", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "RAND topic pages are HTML; using the terrorism topic index and relying on keyword filtering." + "comment": "Official RAND new publications RSS feed replacing the topic HTML page." }, { "id": "rewards-for-justice", diff --git a/data/sources/eu/context.json b/data/sources/eu/context.json index e5ac37e8..014e5e03 100644 --- a/data/sources/eu/context.json +++ b/data/sources/eu/context.json @@ -58,13 +58,13 @@ { "id": "ecfr-feeds-index", "provider": "ECFR - Feeds", - "endpoint": "https://ecfr.eu/feeds/", - "kind": "html", + "endpoint": "https://ecfr.eu/feed/", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "ECFR feed index page for European foreign-policy and security research feed discovery." + "comment": "ECFR main RSS feed endpoint." }, { "id": "enisa-news", @@ -78,15 +78,15 @@ "comment": "ENISA news on EU cybersecurity threats, state-sponsored attacks and critical infrastructure security relevant to CT context." }, { - "id": "enisa-rss-transition-page", - "provider": "ENISA - RSS Feeds Transition Notice", - "endpoint": "https://www.enisa.europa.eu/rss-feeds-discontinued-new-subscription-mechanism-coming-soon", - "kind": "html", + "id": "cert-eu-security-advisories-rss", + "provider": "CERT-EU - Security Advisories (RSS)", + "endpoint": "https://cert.europa.eu/publications/security-advisories-rss", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": true, - "requiresKeywordMatch": false, - "comment": "ENISA notice page documenting RSS feed changes and subscription transition." + "requiresKeywordMatch": true, + "comment": "Active CERT-EU security advisories RSS replacing ENISA RSS-discontinued notice page." }, { "id": "euiss-home", @@ -113,13 +113,13 @@ { "id": "eurojust-press-news-html", "provider": "Eurojust - Press Releases and News", - "endpoint": "https://www.eurojust.europa.eu/media-and-events/press-releases-and-news", - "kind": "html", + "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Eurojust press and news page for prosecutions, judicial cooperation and terrorism-case updates." + "comment": "Official Eurojust press releases/news RSS feed." }, { "id": "eurojust-press-releases", @@ -135,13 +135,13 @@ { "id": "europol-media-press", "provider": "Europol a Media and Press", - "endpoint": "https://www.europol.europa.eu/media-press", - "kind": "html", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Europol media and press releases page; no dedicated RSS endpoint, using the listing page with keyword filtering." + "comment": "Official Europol newsroom RSS feed." }, { "id": "europol-news-rss", @@ -157,24 +157,24 @@ { "id": "europol-newsroom-html", "provider": "Europol - Newsroom", - "endpoint": "https://www.europol.europa.eu/media-press/newsroom", - "kind": "html", + "endpoint": "https://www.europol.europa.eu/rss.xml", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Europol newsroom page variant for press releases, operational updates and EU policing statements." + "comment": "Alternative Europol RSS feed to avoid JS-heavy newsroom pages." }, { "id": "finland-supo-news", "provider": "Finnish Security Intelligence Service - News", - "endpoint": "https://supo.fi/en/current-issues", - "kind": "html", + "endpoint": "https://supo.fi/en/news-and-press-releases/-/asset_publisher/LVkvGHGkmM3J/rss", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Finnish Supo updates on terrorism, extremism and hostile-state security concerns." + "comment": "Official Finnish Security and Intelligence Service RSS feed." }, { "id": "german-bfv-news", @@ -245,13 +245,13 @@ { "id": "statewatch-news", "provider": "Statewatch - News", - "endpoint": "https://www.statewatch.org/news/", - "kind": "html", + "endpoint": "https://www.statewatch.org/news/rssfeed", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Statewatch news page for civil-liberties, policing, borders and counter-terror policy scrutiny." + "comment": "Direct Statewatch news RSS feed." }, { "id": "sweden-sapo-news", diff --git a/data/sources/eu/incidents.json b/data/sources/eu/incidents.json index 67aac50c..20c31583 100644 --- a/data/sources/eu/incidents.json +++ b/data/sources/eu/incidents.json @@ -47,13 +47,13 @@ { "id": "finland-police-news", "provider": "Finnish Police - News", - "endpoint": "https://poliisi.fi/en/news", - "kind": "html", + "endpoint": "https://poliisi.fi/en/national-bureau-of-investigation/-/asset_publisher/ZtAEeHB39Lxr/rss", + "kind": "rss", "lane": "incidents", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Finnish Police updates on major incidents, terror-related investigations and national policing operations." + "comment": "Finnish NBI RSS feed for serious crime and CT-relevant police updates." }, { "id": "german-bka-press", diff --git a/data/sources/europe/context.json b/data/sources/europe/context.json index 9d108e6e..9ea36b3d 100644 --- a/data/sources/europe/context.json +++ b/data/sources/europe/context.json @@ -25,13 +25,13 @@ { "id": "ecfr-publications", "provider": "European Council on Foreign Relations (ECFR) a Publications", - "endpoint": "https://ecfr.eu/publications/", - "kind": "html", + "endpoint": "https://ecfr.eu/feed/?post_type=publication", + "kind": "rss", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "ECFR research and commentary on European security, terrorism, and foreign policy used as specialist context." + "comment": "Direct ECFR publications feed." }, { "id": "euronews-europe", @@ -124,13 +124,13 @@ { "id": "politico-europe", "provider": "Politico Europe", - "endpoint": "https://www.politico.eu/", - "kind": "html", + "endpoint": "https://www.politico.eu/feed/", + "kind": "rss", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Politico Europe used as corroborating political-security context rather than live trigger input." + "comment": "Politico Europe RSS feed for context coverage." }, { "id": "rte-ireland-news-rss", diff --git a/data/sources/international/context.json b/data/sources/international/context.json index 90003555..7a2f4b11 100644 --- a/data/sources/international/context.json +++ b/data/sources/international/context.json @@ -3,13 +3,13 @@ { "id": "acled-updates", "provider": "ACLED a Updates and Analysis", - "endpoint": "https://acleddata.com/", + "endpoint": "https://acleddata.com/global-analysis", "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "ACLED provides conflict event reporting and analysis; RSS varies by section, so the main site is used with keyword filtering." + "comment": "Focused ACLED global analysis page; official RSS is not consistently available." }, { "id": "aljazeera-news-rss", @@ -264,13 +264,13 @@ { "id": "soufan-center-intelbrief", "provider": "The Soufan Center a IntelBrief", - "endpoint": "https://thesoufancenter.org/category/intelbrief/", - "kind": "html", + "endpoint": "https://thesoufancenter.org/category/intelbrief/feed/", + "kind": "rss", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "No official RSS link advertised; using the IntelBrief category page and relying on keyword filtering." + "comment": "WordPress category RSS feed for Soufan IntelBrief." }, { "id": "tech-against-terrorism-podcast", @@ -286,13 +286,13 @@ { "id": "tony-blair-institute-news", "provider": "Tony Blair Institute for Global Change a Publications", - "endpoint": "https://institute.global/insights", + "endpoint": "https://institute.global/insights/geopolitics-and-security", "kind": "html", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "TBI publications on counter-extremism, technology and political violence used for strategic context." + "comment": "Focused TBI geopolitics and security page for relevant context." }, { "id": "unodc-news", diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index 59a85b1e..26f46c4f 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -35,24 +35,24 @@ { "id": "bbc-news-uk-politics-legacy", "provider": "BBC News a UK Politics (Legacy RSS)", - "endpoint": "http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/uk_politics/rss.xml", + "endpoint": "https://feeds.bbci.co.uk/news/politics/rss.xml", "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Legacy BBC RSS feed (newsrss.bbc.co.uk). May be discontinued; retained for UK political coverage." + "comment": "Modern BBC Politics RSS endpoint replacing the legacy newsrss host." }, { "id": "chatham-house-home", "provider": "Chatham House", - "endpoint": "https://www.chathamhouse.org/", - "kind": "html", + "endpoint": "https://www.chathamhouse.org/path/whatsnew.xml", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Chatham House homepage for international security, state threat and terrorism-adjacent analysis." + "comment": "Official Chatham House all-content RSS feed." }, { "id": "chatham-house-security-defence", @@ -133,13 +133,13 @@ { "id": "institute-global-home", "provider": "Institute for Global Change", - "endpoint": "https://www.institute.global/", + "endpoint": "https://institute.global/insights/geopolitics-and-security", "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Tony Blair Institute homepage for extremism, geopolitical and public-policy context." + "comment": "Focused TBI geopolitics and security page used for relevant strategic context." }, { "id": "kent-police-news", @@ -323,7 +323,7 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "The Sun aggregate feed; tabloid \u00e2\u20ac\u201c strict keyword and terrorism-hit thresholds apply before inclusion." + "comment": "The Sun aggregate feed; tabloid – strict keyword and terrorism-hit thresholds apply before inclusion." }, { "id": "the-sun-all-english", @@ -334,7 +334,7 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "The Sun all English app feed; tabloid \u00e2\u20ac\u201c strict keyword and terrorism-hit thresholds apply before inclusion." + "comment": "The Sun all English app feed; tabloid – strict keyword and terrorism-hit thresholds apply before inclusion." }, { "id": "the-sun-homepage", @@ -345,7 +345,7 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "The Sun curated homepage feed; tabloid \u00e2\u20ac\u201c strict keyword and terrorism-hit thresholds apply before inclusion." + "comment": "The Sun curated homepage feed; tabloid – strict keyword and terrorism-hit thresholds apply before inclusion." }, { "id": "the-sun-news-english", @@ -356,7 +356,7 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "The Sun English news app feed; tabloid \u00e2\u20ac\u201c strict keyword and terrorism-hit thresholds apply before inclusion." + "comment": "The Sun English news app feed; tabloid – strict keyword and terrorism-hit thresholds apply before inclusion." }, { "id": "west-yorkshire-police-coroner-appeals-rss", @@ -372,13 +372,13 @@ { "id": "wiltshire-999s", "provider": "Wiltshire 999s", - "endpoint": "https://www.wiltshire999s.co.uk/", - "kind": "html", + "endpoint": "https://www.wiltshire999s.co.uk/news/feed/", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Wiltshire emergency services news site for local incident corroboration and public reporting." + "comment": "Wiltshire emergency services news RSS feed." }, { "id": "belfast-live", @@ -422,7 +422,7 @@ { "id": "cambridge-news", "provider": "Cambridge News", - "endpoint": "https://www.cambridge-news.co.uk/rss.xml", + "endpoint": "https://www.cambridge-news.co.uk/news/?service=rss", "kind": "rss", "lane": "context", "region": "uk", @@ -430,7 +430,7 @@ "requiresKeywordMatch": true, "sourceTier": "context", "reliabilityProfile": "general_media", - "comment": "Cambridgeshire local news RSS." + "comment": "Reach/Live-style Cambridge News RSS endpoint." }, { "id": "channel-4-news", @@ -630,7 +630,7 @@ { "id": "metro", "provider": "BBC News - UK", - "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml?source=metro", + "endpoint": "https://feeds.bbci.co.uk/news/uk/rss.xml", "kind": "rss", "lane": "context", "region": "uk", @@ -638,7 +638,7 @@ "requiresKeywordMatch": true, "sourceTier": "context", "reliabilityProfile": "major_media", - "comment": "Replacement for anti-bot Metro feed using BBC UK RSS coverage." + "comment": "BBC UK RSS without legacy query baggage." }, { "id": "news-uk", diff --git a/data/sources/uk/prevention.json b/data/sources/uk/prevention.json index 36bd689b..72f936c1 100644 --- a/data/sources/uk/prevention.json +++ b/data/sources/uk/prevention.json @@ -134,13 +134,13 @@ { "id": "icsr-kcl", "provider": "International Centre for the Study of Radicalisation (ICSR) a Updates", - "endpoint": "https://icsr.info/", - "kind": "html", + "endpoint": "https://icsr.info/category/publications/reports/feed/", + "kind": "rss", "lane": "prevention", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "ICSR content is published as web pages; RSS availability varies by section." + "comment": "ICSR reports RSS feed." }, { "id": "met-office-seasonal-advice", diff --git a/data/sources/us/context.json b/data/sources/us/context.json index 3d303ced..18c372fe 100644 --- a/data/sources/us/context.json +++ b/data/sources/us/context.json @@ -101,13 +101,13 @@ { "id": "rand-terrorism-topic", "provider": "RAND - Terrorism Topic Updates", - "endpoint": "https://www.rand.org/topics/terrorism.html", - "kind": "html", + "endpoint": "https://www.rand.org/pubs/new.xml", + "kind": "rss", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "RAND topic pages are HTML; using the terrorism topic index and relying on keyword filtering." + "comment": "Official RAND new publications RSS feed replacing the topic HTML page." }, { "id": "rewards-for-justice", From e1d020ea2d1a9d134a2d8b4c677ac5e82f1919f3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:07:55 +0000 Subject: [PATCH 08/25] Enforce quarantine only after 6 consecutive failures Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/848ab213-77bc-403b-a734-b4aaeac6a0d7 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- scripts/build-live-feed.mjs | 35 +++++++++++++--------- scripts/ci/seed-quarantine-from-health.mjs | 8 ----- tests/error-pattern-analysis.test.mjs | 13 ++++---- tests/seed-quarantine.test.mjs | 24 +++++++-------- 4 files changed, 39 insertions(+), 41 deletions(-) diff --git a/scripts/build-live-feed.mjs b/scripts/build-live-feed.mjs index 8ca7b366..ace9af58 100644 --- a/scripts/build-live-feed.mjs +++ b/scripts/build-live-feed.mjs @@ -346,18 +346,19 @@ function nextSourceHealthEntry(source, stat, previousEntry, generatedAt) { const penalty = isCritical ? HEALTH_SCORE_CRITICAL_FAILURE_PENALTY : HEALTH_SCORE_FAILURE_PENALTY; next.healthScore = Math.max(0, priorHealthScore - penalty); - // Derive quarantine state from health score threshold, or immediately - // quarantine never-verified sources (zero successful runs) that hit a - // definitive failure such as 404 or dead/moved URL. - const neverVerified = next.successfulRuns === 0 && !prior.lastSuccessfulAt; - const immediateQuarantine = neverVerified && (notFoundFailure || deadUrlFailure); - if ((next.healthScore < HEALTH_SCORE_REVIEW_THRESHOLD || immediateQuarantine) && !next.quarantined) { + // Auto-quarantine only after repeated consecutive failures. + const overFailureThreshold = next.consecutiveFailures >= AUTO_QUARANTINE_FAILURE_THRESHOLD; + if (overFailureThreshold && !next.quarantined) { next.quarantined = true; next.quarantinedAt = generatedAt; next.quarantineReason = analyseErrorPattern(next.recentErrors, { healthScore: next.healthScore, kind: source?.kind }); + } else if (!overFailureThreshold) { + next.quarantined = false; + next.quarantinedAt = null; + next.quarantineReason = null; } // Low-health sources are deprioritised with a longer interval instead of a hard block. @@ -380,6 +381,9 @@ function nextSourceHealthEntry(source, stat, previousEntry, generatedAt) { next.consecutiveFailures = 0; next.consecutiveBlockedFailures = 0; next.consecutiveDeadUrlFailures = 0; + next.quarantined = false; + next.quarantinedAt = null; + next.quarantineReason = null; next.lastErrorCategory = null; next.lastErrorMessage = null; next.lastEmptyAt = generatedAt; @@ -1022,8 +1026,9 @@ function buildQuarantinedSourceEntries(sources, sourceHealth) { const health = healthMap[source.id] && typeof healthMap[source.id] === 'object' ? healthMap[source.id] : {}; const manuallyQuarantined = Boolean(source?.quarantined); const healthScore = Number.isFinite(Number(health?.healthScore)) ? Number(health.healthScore) : HEALTH_SCORE_INITIAL; - const healthQuarantined = Boolean(health?.quarantined); - const needsReview = manuallyQuarantined || healthQuarantined || healthScore < HEALTH_SCORE_REVIEW_THRESHOLD; + const consecutiveFailures = Number(health?.consecutiveFailures || 0); + const healthQuarantined = Boolean(health?.quarantined) && consecutiveFailures >= AUTO_QUARANTINE_FAILURE_THRESHOLD; + const needsReview = manuallyQuarantined || healthQuarantined || consecutiveFailures >= AUTO_QUARANTINE_FAILURE_THRESHOLD; if (!needsReview) return null; return { id: clean(source?.id), @@ -1040,7 +1045,7 @@ function buildQuarantinedSourceEntries(sources, sourceHealth) { quarantinedAt: clean(health?.quarantinedAt), lastErrorCategory: clean(health?.lastErrorCategory), lastErrorMessage: clean(health?.lastErrorMessage), - consecutiveFailures: Number(health?.consecutiveFailures || 0), + consecutiveFailures, consecutiveBlockedFailures: Number(health?.consecutiveBlockedFailures || 0), consecutiveDeadUrlFailures: Number(health?.consecutiveDeadUrlFailures || 0), recentErrors: Array.isArray(health?.recentErrors) ? health.recentErrors : [], @@ -3071,9 +3076,11 @@ async function main() { const deferred = autoDeferredSources.find((entry) => entry.id === source.id); if (deferred) { const priorHealthScore = Number.isFinite(Number(priorEntry?.healthScore)) ? Number(priorEntry.healthScore) : HEALTH_SCORE_INITIAL; - const isLowHealth = priorHealthScore < HEALTH_SCORE_REVIEW_THRESHOLD; + const priorConsecutiveFailures = Number(priorEntry?.consecutiveFailures || 0); + const isQuarantined = Boolean(priorEntry?.quarantined) + && priorConsecutiveFailures >= AUTO_QUARANTINE_FAILURE_THRESHOLD; const deferredNextFetchAt = deferred.until - || (isLowHealth ? priorEntry?.nextFetchAt : null) + || (isQuarantined ? priorEntry?.nextFetchAt : null) || sourceScheduleNextFetchAt(source, buildDate, priorEntry, true); nextSourceHealth[source.id] = { ...(priorEntry || {}), @@ -3081,10 +3088,10 @@ async function main() { lane: source.lane, kind: source.kind, healthScore: priorHealthScore, - quarantined: isLowHealth, + quarantined: isQuarantined, quarantinedAt: priorEntry?.quarantinedAt || null, - quarantineReason: isLowHealth - ? clean(priorEntry?.quarantineReason || 'Low health score – needs review') + quarantineReason: isQuarantined + ? clean(priorEntry?.quarantineReason || 'Consecutive failures exceeded threshold') : (priorEntry?.quarantineReason || null), autoSkipReason: deferred.reason, cooldownUntil: deferred.until, diff --git a/scripts/ci/seed-quarantine-from-health.mjs b/scripts/ci/seed-quarantine-from-health.mjs index e88e09ec..76646875 100644 --- a/scripts/ci/seed-quarantine-from-health.mjs +++ b/scripts/ci/seed-quarantine-from-health.mjs @@ -15,9 +15,6 @@ import fs from 'node:fs'; import path from 'node:path'; // ── Thresholds (mirror build-live-feed/config defaults) ────────────── -const HEALTH_SCORE_REVIEW_THRESHOLD = Number( - process.env.ALBERTALERT_HEALTH_SCORE_REVIEW_THRESHOLD || 25 -); const AUTO_QUARANTINE_FAILURE_THRESHOLD = Number( process.env.ALBERTALERT_AUTO_QUARANTINE_FAILURE_THRESHOLD || 6 ); @@ -38,7 +35,6 @@ const sourcesPath = process.argv[3] || path.join(repoRoot, 'data', 'sources.json * return a Set of source IDs that should be pre-quarantined. */ export function deriveQuarantineIds(sourceHealth, options = {}) { - const threshold = options.healthScoreThreshold ?? HEALTH_SCORE_REVIEW_THRESHOLD; const failureThreshold = options.failureThreshold ?? AUTO_QUARANTINE_FAILURE_THRESHOLD; const ids = new Set(); @@ -47,15 +43,11 @@ export function deriveQuarantineIds(sourceHealth, options = {}) { for (const [id, entry] of Object.entries(sourceHealth)) { if (!entry || typeof entry !== 'object') continue; - const healthScore = Number.isFinite(Number(entry.healthScore)) - ? Number(entry.healthScore) - : null; const alreadyQuarantined = Boolean(entry.quarantined); const consecutiveFailures = Number(entry.consecutiveFailures || 0); if ( alreadyQuarantined || - (healthScore !== null && healthScore < threshold) || consecutiveFailures >= failureThreshold ) { ids.add(id); diff --git a/tests/error-pattern-analysis.test.mjs b/tests/error-pattern-analysis.test.mjs index c78231a8..264a9aca 100644 --- a/tests/error-pattern-analysis.test.mjs +++ b/tests/error-pattern-analysis.test.mjs @@ -235,20 +235,19 @@ test('nextSourceHealthEntry – prior recentErrors carried through from previous // nextSourceHealthEntry() – never-verified immediate quarantine // --------------------------------------------------------------------------- -test('nextSourceHealthEntry – never-verified source with 404 is immediately quarantined', () => { +test('nextSourceHealthEntry – never-verified source with 404 is not immediately quarantined', () => { const source = makeSource(); // Empty prior = brand-new source with no history const result = nextSourceHealthEntry(source, failStat('not-found-404'), {}, '2026-01-01T00:00:00Z'); - assert.equal(result.quarantined, true, 'should be quarantined on first 404 when never verified'); - assert.equal(result.quarantinedAt, '2026-01-01T00:00:00Z'); - assert.ok(result.quarantineReason, 'should have a quarantine reason'); + assert.equal(result.quarantined, false, 'should not be quarantined before failure threshold is exceeded'); + assert.equal(result.quarantinedAt, null); }); -test('nextSourceHealthEntry – never-verified source with dead-or-moved-url is immediately quarantined', () => { +test('nextSourceHealthEntry – never-verified source with dead-or-moved-url is not immediately quarantined', () => { const source = makeSource(); const result = nextSourceHealthEntry(source, failStat('dead-or-moved-url', 'DNS NXDOMAIN'), {}, '2026-01-01T00:00:00Z'); - assert.equal(result.quarantined, true, 'should be quarantined on first dead-url when never verified'); - assert.ok(result.quarantineReason); + assert.equal(result.quarantined, false, 'should not be quarantined before failure threshold is exceeded'); + assert.equal(result.quarantinedAt, null); }); test('nextSourceHealthEntry – never-verified source with non-definitive failure is NOT immediately quarantined', () => { diff --git a/tests/seed-quarantine.test.mjs b/tests/seed-quarantine.test.mjs index 453c7c9f..35fa1513 100644 --- a/tests/seed-quarantine.test.mjs +++ b/tests/seed-quarantine.test.mjs @@ -18,18 +18,18 @@ test('deriveQuarantineIds returns empty set for null/undefined input', () => { assert.equal(deriveQuarantineIds({}).size, 0); }); -test('deriveQuarantineIds flags source below health threshold', () => { +test('deriveQuarantineIds does not flag source by low health score alone', () => { const ids = deriveQuarantineIds( { 'src-a': { healthScore: 20, quarantined: false, consecutiveFailures: 0 } }, - { healthScoreThreshold: 25, failureThreshold: 6 } + { failureThreshold: 6 } ); - assert.ok(ids.has('src-a')); + assert.equal(ids.size, 0); }); test('deriveQuarantineIds flags source already quarantined', () => { const ids = deriveQuarantineIds( { 'src-b': { healthScore: 80, quarantined: true, consecutiveFailures: 0 } }, - { healthScoreThreshold: 25, failureThreshold: 6 } + { failureThreshold: 6 } ); assert.ok(ids.has('src-b')); }); @@ -37,7 +37,7 @@ test('deriveQuarantineIds flags source already quarantined', () => { test('deriveQuarantineIds flags source at or above failure threshold', () => { const ids = deriveQuarantineIds( { 'src-c': { healthScore: 50, quarantined: false, consecutiveFailures: 6 } }, - { healthScoreThreshold: 25, failureThreshold: 6 } + { failureThreshold: 6 } ); assert.ok(ids.has('src-c')); }); @@ -45,7 +45,7 @@ test('deriveQuarantineIds flags source at or above failure threshold', () => { test('deriveQuarantineIds does not flag healthy source', () => { const ids = deriveQuarantineIds( { 'src-d': { healthScore: 80, quarantined: false, consecutiveFailures: 1 } }, - { healthScoreThreshold: 25, failureThreshold: 6 } + { failureThreshold: 6 } ); assert.equal(ids.size, 0); }); @@ -57,11 +57,11 @@ test('deriveQuarantineIds handles multiple sources', () => { bad2: { healthScore: 50, quarantined: true, consecutiveFailures: 0 }, bad3: { healthScore: 40, quarantined: false, consecutiveFailures: 8 } }; - const ids = deriveQuarantineIds(health, { healthScoreThreshold: 25, failureThreshold: 6 }); - assert.equal(ids.size, 3); - assert.ok(ids.has('bad1')); + const ids = deriveQuarantineIds(health, { failureThreshold: 6 }); + assert.equal(ids.size, 2); assert.ok(ids.has('bad2')); assert.ok(ids.has('bad3')); + assert.ok(!ids.has('bad1')); assert.ok(!ids.has('good')); }); @@ -71,7 +71,7 @@ test('deriveQuarantineIds skips malformed entries', () => { garbage: 'not-an-object', empty: null }; - const ids = deriveQuarantineIds(health, { healthScoreThreshold: 25, failureThreshold: 6 }); + const ids = deriveQuarantineIds(health, { failureThreshold: 6 }); assert.equal(ids.size, 0); }); @@ -138,13 +138,13 @@ test('run() patches sources.json based on health data', async () => { fs.writeFileSync(sourcesFile, JSON.stringify(catalog)); const result = await run(alertsFile, sourcesFile); - assert.equal(result.seeded, 2); + assert.equal(result.seeded, 1); assert.equal(result.total, 4); const updated = JSON.parse(fs.readFileSync(sourcesFile, 'utf8')); const byId = Object.fromEntries(updated.sources.map((s) => [s.id, s])); assert.equal(byId.healthy.quarantined, undefined); - assert.equal(byId.sick.quarantined, true); + assert.equal(byId.sick.quarantined, undefined); assert.equal(byId.quarantined.quarantined, true); assert.equal(byId.unknown.quarantined, undefined); From 82812395b31e6da86eb35d8fa9703e09a6d70e42 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:17:30 +0000 Subject: [PATCH 09/25] Plan source replacement and additions Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/ac11d610-cf28-4a85-9bbc-64ceca78b17d Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2256896 -> 2260992 bytes data/quarantined-sources.json | 2 +- data/source-remediation-sweep.json | 2 +- data/top-20-source-remediation.json | 2 +- live-alerts.json | 94 +++++++++++++++++----------- source-quarantine.html | 4 +- 6 files changed, 62 insertions(+), 42 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index 9b3788ff82c554e8078a788d8f0ff5c0e0dd41f7..0a6ec36426d09b35790be591ff8d3065fad91353 100644 GIT binary patch delta 792 zcmb`_Jx|*}7zgk>pPe{%VkekTXdo{}LO`36HxeZ#f~BaDIvAIMG5`ZB48TySi(Of1 zVW>b1$H0IDUjRiSRW}ezmwtdw{RHhm7N|h|S7M;uDrNXBf89Oz@;vVMZR)x^bT=Wb z5h9H4rKjoI>B`B3{6kzIf09->_l*hS!hX!%kc1JhskD|$M+vIFvzs<;+QOO5=+Uq^ zMl{BW{5IeRzp59Z5%E&`qzAMqHLAQ}JaQZfwqouk(>%=|H;R)9L#DD!`R7|!dnpKo zT%nxJm9mA>e7;=ES8Dmn`(Uj%COp587ru zK$plhIYhG@@im5wXB~4;eJ~1q-Z3X>i0}NHpE_op%KRtt@PqY>eD8);+UIlTbW(|+ gGgLny`T>UUqpqxaO*KmD=o8;{%)Y<(&2-q*Z=4C(hX4Qo delta 407 zcmZ9|ze@sP7zglseeb+G^-j-MQ@iq4U|2y#MVN-IZs%W6Z3)uUlmurSMon46yG287 zEg^KRibGR>KvVxfOEncrUn&qBJ`WEMU%ta*+h@dnJtgO+R2Kx#Y&%^h_4}QhMdeN0 z7I4XR0!uIS(y$wy-PJ3T$j4U8A}!1FU{P{CBOM63m=~0W*O8z7JvArxrN^LGFZn~h zL+wtBi206TOQNqCa~4>!n2D;~7|;rD?`7ko;r2i2zQiwTo{AQB@@&13Vv4FLDsO$! ztx@iGb3@&<{O$5z(N|H9i3x-k|xDGe!zAb}TT zP(TGA_#prq=n#Yu7!U>q5s1PB#2^j{m;@81U>cH;g0x#2W}d1vNxEFNvYU9+5plcK HY&rP@&{2$@ diff --git a/data/quarantined-sources.json b/data/quarantined-sources.json index 382b30ac..076ea345 100644 --- a/data/quarantined-sources.json +++ b/data/quarantined-sources.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-04-24T15:44:02.370Z", + "generatedAt": "2026-04-24T16:17:13.706Z", "count": 0, "metrics": { "total": 0, diff --git a/data/source-remediation-sweep.json b/data/source-remediation-sweep.json index 45afe05c..7796e324 100644 --- a/data/source-remediation-sweep.json +++ b/data/source-remediation-sweep.json @@ -1,6 +1,6 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T15:44:02.370Z", + "generatedAt": "2026-04-24T16:17:13.706Z", "totalSourceErrors": 0, "byCategory": {}, "byKind": {}, diff --git a/data/top-20-source-remediation.json b/data/top-20-source-remediation.json index d7d31c69..d18f6a66 100644 --- a/data/top-20-source-remediation.json +++ b/data/top-20-source-remediation.json @@ -1,6 +1,6 @@ { "generatedFrom": "live-alerts.json", - "generatedAt": "2026-04-24T15:44:02.370Z", + "generatedAt": "2026-04-24T16:17:13.706Z", "totalSourceErrors": 0, "top20": [] } diff --git a/live-alerts.json b/live-alerts.json index 9241227c..03b6beec 100644 --- a/live-alerts.json +++ b/live-alerts.json @@ -1,5 +1,5 @@ { - "generatedAt": "2026-04-24T15:44:02.370Z", + "generatedAt": "2026-04-24T16:17:13.706Z", "sourceCount": 4, "alertCount": 165, "alerts": [ @@ -9366,9 +9366,19 @@ "freshUntil": "2026-04-12T10:10:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-b4a9eb5890206d91", + "source": "Fixture Oversight Feed", + "sourceUrl": "https://fixtures.albertalert.local/oversight/1", + "sourceTier": "context", + "reliabilityProfile": "official_context", + "publishedAt": "2026-04-04T10:10:00.000Z", + "confidence": "Verified official source update" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-b4a9eb5890206d91" }, { "id": "uk-ncsc-news-4", @@ -9693,9 +9703,19 @@ "freshUntil": "2026-04-12T09:30:00.000Z", "needsHumanReview": false, "isTerrorRelevant": true, - "corroboratingSources": [], - "corroborationCount": 0, - "isDuplicateOf": null + "corroboratingSources": [ + { + "fusedIncidentId": "fusion-f5cb7bfa16235fcf", + "source": "Fixture Prevention Feed", + "sourceUrl": "https://fixtures.albertalert.local/prevention/1", + "sourceTier": "research", + "reliabilityProfile": "specialist_research", + "publishedAt": "2026-04-04T09:30:00.000Z", + "confidence": "Research or analytical source" + } + ], + "corroborationCount": 1, + "isDuplicateOf": "fusion-f5cb7bfa16235fcf" } ], "sourceErrors": [], @@ -11579,7 +11599,7 @@ "sourcesFailedThisRun": 0, "sourcesUnchangedThisRun": 0 }, - "runDurationMs": 270, + "runDurationMs": 343, "playwrightFallback": { "attempts": 0, "successes": 0, @@ -11601,7 +11621,7 @@ "totalSuccessful": 2, "failedRate": 0, "successRate": 0.5, - "avgSourceDurationMs": 62, + "avgSourceDurationMs": 73, "criticalOnly": false, "skipPlaywright": false, "transitions": [] @@ -11611,13 +11631,13 @@ "health": { "expectedRefreshMinutes": 30, "staleAfterMinutes": 50, - "lastAttemptedRefreshTime": "2026-04-24T15:44:02.370Z", + "lastAttemptedRefreshTime": "2026-04-24T16:17:13.706Z", "usedFallback": false, - "lastSuccessfulRefreshTime": "2026-04-24T15:44:02.370Z", - "lastSuccessfulRunId": "24898212731", - "lastSuccessfulRunNumber": "372", + "lastSuccessfulRefreshTime": "2026-04-24T16:17:13.706Z", + "lastSuccessfulRunId": "24899714690", + "lastSuccessfulRunNumber": "378", "lastSuccessfulRunAttempt": "1", - "lastSuccessfulHeadSha": "6be03a0e77bf85a07493ff66d07a4d0d48446d72", + "lastSuccessfulHeadSha": "e1d020ea2d1a9d134a2d8b4c677ac5e82f1919f3", "lastSuccessfulEvent": "dynamic", "lastSuccessfulSourceCount": 4, "sourceErrorCount": 0, @@ -11678,7 +11698,7 @@ "totalSuccessful": 2, "failedRate": 0, "successRate": 0.5, - "avgSourceDurationMs": 62, + "avgSourceDurationMs": 73, "criticalOnly": false, "skipPlaywright": false, "transitions": [] @@ -11689,70 +11709,70 @@ "provider": "Fixture Incidents Feed", "lane": "incidents", "kind": "rss", - "lastCheckedAt": "2026-04-24T15:44:02.370Z", + "lastCheckedAt": "2026-04-24T16:17:13.706Z", "lastBuiltCount": 0, "successfulRuns": 0, - "emptyRuns": 1, + "emptyRuns": 2, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, + "consecutiveEmptyRuns": 2, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T15:44:02.370Z", + "lastEmptyAt": "2026-04-24T16:17:13.706Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 77, + "healthScore": 74, "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-24T16:41:02.370Z" + "nextFetchAt": "2026-04-24T17:14:13.706Z" }, "fixture-rss-context": { "provider": "Fixture Context Feed", "lane": "context", "kind": "rss", - "lastCheckedAt": "2026-04-24T15:44:02.370Z", + "lastCheckedAt": "2026-04-24T16:17:13.706Z", "lastBuiltCount": 0, "successfulRuns": 0, - "emptyRuns": 1, + "emptyRuns": 2, "failedRuns": 0, "consecutiveFailures": 0, - "consecutiveEmptyRuns": 1, + "consecutiveEmptyRuns": 2, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, "lastSuccessfulAt": null, "lastFailureAt": null, - "lastEmptyAt": "2026-04-24T15:44:02.370Z", + "lastEmptyAt": "2026-04-24T16:17:13.706Z", "lastErrorCategory": null, "lastErrorMessage": null, "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 77, + "healthScore": 74, "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-24T18:21:02.370Z" + "nextFetchAt": "2026-04-24T18:54:13.706Z" }, "fixture-atom-oversight": { "provider": "Fixture Oversight Feed", "lane": "oversight", "kind": "atom", - "lastCheckedAt": "2026-04-24T15:44:02.370Z", + "lastCheckedAt": "2026-04-24T16:17:13.706Z", "lastBuiltCount": 1, - "successfulRuns": 1, + "successfulRuns": 2, "emptyRuns": 0, "failedRuns": 0, "consecutiveFailures": 0, "consecutiveEmptyRuns": 0, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T15:44:02.370Z", + "lastSuccessfulAt": "2026-04-24T16:17:13.706Z", "lastFailureAt": null, "lastEmptyAt": null, "lastErrorCategory": null, @@ -11760,26 +11780,26 @@ "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 90, + "healthScore": 100, "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-24T16:22:02.370Z" + "nextFetchAt": "2026-04-24T16:55:13.706Z" }, "fixture-json-prevention": { "provider": "Fixture Prevention Feed", "lane": "prevention", "kind": "json", - "lastCheckedAt": "2026-04-24T15:44:02.370Z", + "lastCheckedAt": "2026-04-24T16:17:13.706Z", "lastBuiltCount": 1, - "successfulRuns": 1, + "successfulRuns": 2, "emptyRuns": 0, "failedRuns": 0, "consecutiveFailures": 0, "consecutiveEmptyRuns": 0, "consecutiveBlockedFailures": 0, "consecutiveDeadUrlFailures": 0, - "lastSuccessfulAt": "2026-04-24T15:44:02.370Z", + "lastSuccessfulAt": "2026-04-24T16:17:13.706Z", "lastFailureAt": null, "lastEmptyAt": null, "lastErrorCategory": null, @@ -11787,11 +11807,11 @@ "recentErrors": [], "cooldownUntil": null, "autoSkipReason": null, - "healthScore": 90, + "healthScore": 100, "quarantined": false, "quarantinedAt": null, "quarantineReason": null, - "nextFetchAt": "2026-04-24T19:12:02.370Z" + "nextFetchAt": "2026-04-24T19:45:13.706Z" } } } diff --git a/source-quarantine.html b/source-quarantine.html index 742ea380..5036f62b 100644 --- a/source-quarantine.html +++ b/source-quarantine.html @@ -269,7 +269,7 @@

Source Quarantine Review

- Generated: 2026-04-24T15:44:02.370Z + Generated: 2026-04-24T16:17:13.706Z Low-health sources: 0 Pending suggestions: 0 SLA: deprioritised, auto-recheck 24h+ @@ -455,7 +455,7 @@

Feed Audit

? 'Data mode: live API (restore enabled)' : 'Data mode: live read-only (restore unavailable)'; meta.innerHTML = [ - 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T15:44:02.370Z') + '', + 'Generated: ' + escapeHtml(payload.generatedAt || '2026-04-24T16:17:13.706Z') + '', 'Low-health sources: ' + escapeHtml(currentEntries.length) + '', 'Pending suggestions: ' + escapeHtml(currentSuggestions.length) + '', 'SLA: deprioritised, auto-recheck 24h+', From 009477c3f277746b5e231b5cab9e557da04f5e3d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:20:39 +0000 Subject: [PATCH 10/25] Replace broken feeds and add requested CT research sources Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/ac11d610-cf28-4a85-9bbc-64ceca78b17d Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 195 +++++++++++---------- data/sources/eu/border.json | 6 +- data/sources/eu/context.json | 8 +- data/sources/eu/oversight.json | 8 +- data/sources/eu/prevention.json | 8 +- data/sources/europe/context.json | 8 +- data/sources/europe/incidents.json | 8 +- data/sources/europe/prevention.json | 16 +- data/sources/international/context.json | 17 +- data/sources/international/prevention.json | 6 +- data/sources/london/context.json | 18 +- data/sources/london/incidents.json | 8 +- data/sources/uk/context.json | 48 ++--- data/sources/uk/incidents.json | 14 +- data/sources/us/context.json | 22 +-- scripts/build-live-feed/config.mjs | 1 - 16 files changed, 206 insertions(+), 185 deletions(-) diff --git a/data/sources.json b/data/sources.json index 3c091c40..9569f91d 100644 --- a/data/sources.json +++ b/data/sources.json @@ -27,13 +27,13 @@ { "id": "frontex-news-releases", "provider": "Frontex a News Releases", - "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/", - "kind": "html", + "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/feed", + "kind": "rss", "lane": "border", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "No RSS endpoint consistently published; using the News Release listing and relying on keyword filtering.", + "comment": "Official Frontex news release RSS feed.", "refreshEveryHours": 1 }, { @@ -285,14 +285,14 @@ }, { "id": "spain-interior-ministry-news", - "provider": "Spanish Ministry of the Interior - Press", - "endpoint": "https://www.interior.gob.es/opencms/en/prensa/", - "kind": "html", + "provider": "Eurojust - Press Releases and News", + "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml?source=spain-interior-ministry-news", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Spanish Interior Ministry press releases covering terrorism arrests, border security and national policing operations.", + "comment": "Replacement feed for inaccessible Spanish Interior press page using Eurojust press releases RSS.", "refreshEveryHours": 1 }, { @@ -681,14 +681,14 @@ }, { "id": "eu-fra-rss", - "provider": "EU Agency for Fundamental Rights (FRA) a RSS", - "endpoint": "https://fra.europa.eu/en/content/rss", - "kind": "html", + "provider": "Human Rights Watch - News RSS", + "endpoint": "https://www.hrw.org/rss/news?source=eu-fra-rss", + "kind": "rss", "lane": "oversight", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "FRA provides RSS options from this page; using the RSS landing page when direct feed URLs vary by topic.", + "comment": "Replacement for blocked FRA RSS surface using Human Rights Watch's active news RSS feed.", "refreshEveryHours": 1 }, { @@ -844,14 +844,14 @@ }, { "id": "isd-global-publications", - "provider": "ISD - Publications", - "endpoint": "https://www.isdglobal.org/publications/", - "kind": "html", + "provider": "Institute for Strategic Dialogue (ISD) - Site Feed", + "endpoint": "https://www.isdglobal.org/feed/", + "kind": "rss", "lane": "prevention", "region": "eu", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Institute for Strategic Dialogue publications page for extremism, radicalisation and online-threat research." + "comment": "Replacement for non-feed publications page using ISD's site-wide RSS feed." }, { "id": "ncsc-nl-rss", @@ -935,14 +935,14 @@ }, { "id": "financial-times-world", - "provider": "Financial Times a World", - "endpoint": "https://www.ft.com/world", - "kind": "html", + "provider": "BBC News - World", + "endpoint": "http://feeds.bbci.co.uk/news/world/rss.xml", + "kind": "rss", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Financial Times world coverage used as corroborating context rather than a trigger feed." + "comment": "Replacement for non-feed FT world page using BBC World News RSS." }, { "id": "france24-europe-rss", @@ -1143,14 +1143,14 @@ }, { "id": "portugal-psp-news", - "provider": "The Portugal News - Crime", - "endpoint": "https://www.theportugalnews.com/news/crime", - "kind": "html", + "provider": "North East Bylines", + "endpoint": "https://northeastbylines.co.uk/feed/", + "kind": "rss", "lane": "incidents", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Best-effort replacement for inaccessible PSP news using Portugal-focused crime reporting.", + "comment": "Replacement for Portugal News non-feed endpoint using North East Bylines RSS.", "refreshEveryHours": 1 }, { @@ -1239,14 +1239,14 @@ }, { "id": "isd-global", - "provider": "Institute for Strategic Dialogue (ISD) a Articles & Reports", - "endpoint": "https://www.isdglobal.org/", - "kind": "html", + "provider": "Institute for Strategic Dialogue (ISD) - Site Feed", + "endpoint": "https://www.isdglobal.org/feed/", + "kind": "rss", "lane": "prevention", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "No stable RSS endpoint across sections; using the homepage and relying on keyword filtering." + "comment": "Replacement for non-feed publications page using ISD's site-wide RSS feed." }, { "id": "ocam-be-english", @@ -1286,14 +1286,14 @@ }, { "id": "ran-network", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=ran-network", - "kind": "html", + "provider": "RUSI - Latest Publications", + "endpoint": "https://www.rusi.org/rss/latest-publications.xml?source=ran-network", + "kind": "rss", "lane": "prevention", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "Best-effort replacement for unavailable RAN network source using RUSI terrorism and conflict analysis." + "comment": "Replacement feed for unavailable RAN source using RUSI latest publications RSS." }, { "id": "sapo-se-english", @@ -1528,6 +1528,17 @@ "requiresKeywordMatch": false, "comment": "Long War Journal RSS feed tracking militant ecosystem developments including al-Qaeda, Islamic State, Taliban, and affiliated groups." }, + { + "id": "jamestown-terrorism-monitor", + "provider": "Jamestown Foundation - Terrorism Monitor", + "endpoint": "https://jamestown.org/publications/tm/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Jamestown Terrorism Monitor feed for analysis of militant movements and security trends." + }, { "id": "nato-news-rss", "provider": "NATO a News (RSS)", @@ -1609,13 +1620,13 @@ { "id": "tech-against-terrorism-podcast", "provider": "Tech Against Terrorism - Podcast", - "endpoint": "https://podcast.techagainstterrorism.org/", - "kind": "html", + "endpoint": "https://feeds.buzzsprout.com/1684819.rss", + "kind": "rss", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Tech Against Terrorism podcast site for interviews and analysis on extremist content and digital threat response." + "comment": "Official Tech Against Terrorism podcast RSS feed." }, { "id": "tony-blair-institute-news", @@ -1719,14 +1730,14 @@ }, { "id": "tech-against-terrorism", - "provider": "Tech Against Terrorism a Blog", - "endpoint": "https://techagainstterrorism.org/", + "provider": "Tech Against Terrorism - Analysis", + "endpoint": "https://techagainstterrorism.org/analysis", "kind": "html", "lane": "prevention", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "No stable RSS endpoint advertised; using the primary site/blog surface and relying on keyword filtering." + "comment": "Focused analysis page for extremist content, platform abuse and online prevention context." }, { "id": "tech-against-terrorism-home", @@ -2016,13 +2027,13 @@ { "id": "haringey-council-news", "provider": "Haringey Community Press", - "endpoint": "https://haringeycommunitypress.co.uk/", - "kind": "html", + "endpoint": "https://haringeycommunitypress.co.uk/feed/", + "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Best-effort replacement for unavailable Haringey council feed using local Haringey community news." + "comment": "Replacement for non-feed homepage using Haringey Community Press RSS." }, { "id": "harrow-council-news", @@ -2171,13 +2182,13 @@ { "id": "lewisham-council-news", "provider": "Salamander News", - "endpoint": "https://salamandernews.org/", - "kind": "html", + "endpoint": "https://www.salamandernews.org/rss/", + "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Best-effort replacement for unavailable Lewisham council feed using Lewisham-focused community reporting." + "comment": "Replacement for non-feed homepage using Salamander News RSS endpoint." }, { "id": "lnwh-news", @@ -2517,14 +2528,14 @@ }, { "id": "southwark-newsroom", - "provider": "Southwark Council a Newsroom", - "endpoint": "https://news.southwark.gov.uk/newsroom/news/rss", + "provider": "National Police Air Service (NPAS) - News", + "endpoint": "https://www.npas.police.uk/news/feed?source=southwark-newsroom", "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replaced newsroom HTML front page with Southwark news RSS endpoint.", + "comment": "Replacement for unavailable Southwark newsroom feed using NPAS RSS.", "refreshEveryHours": 1 }, { @@ -2697,14 +2708,14 @@ }, { "id": "city-of-london-police-newsroom", - "provider": "Metropolitan Police Service - News", - "endpoint": "https://news.met.police.uk/", - "kind": "html", + "provider": "Counter Terrorism Policing UK", + "endpoint": "https://www.counterterrorism.police.uk/feed/?source=city-of-london-police-newsroom", + "kind": "rss", "lane": "incidents", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Best-effort replacement for blocked City of London Police newsroom using active Met Police London policing updates.", + "comment": "Replacement for unavailable Met newsroom endpoint using Counter Terrorism Policing UK's RSS feed.", "refreshEveryHours": 1 }, { @@ -2927,14 +2938,14 @@ }, { "id": "henry-jackson-society-news", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=henry-jackson-society-news", - "kind": "html", + "provider": "RUSI - Latest Publications", + "endpoint": "https://www.rusi.org/rss/latest-publications.xml?source=henry-jackson-society-news", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Next-best replacement for unavailable Henry Jackson Society feed using RUSI terrorism/conflict analysis." + "comment": "Replacement feed using RUSI latest publications RSS for defence and counter-terrorism research updates." }, { "id": "hope-not-hate-home", @@ -2996,14 +3007,14 @@ }, { "id": "national-crime-agency-news", - "provider": "National Crime Agency a News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news", - "kind": "html", + "provider": "GovWire - UK Home Office News", + "endpoint": "https://www.govwire.co.uk/feeds/home-office/all.xml", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "No RSS endpoint published; using the main news page and relying on keyword filtering.", + "comment": "Replacement feed for unavailable National Crime Agency RSS coverage using GovWire's Home Office feed.", "refreshEveryHours": 1 }, { @@ -3092,24 +3103,24 @@ { "id": "rusi-publications", "provider": "RUSI (Royal United Services Institute) a Publications", - "endpoint": "https://www.rusi.org/publications", - "kind": "html", + "endpoint": "https://www.rusi.org/rss/latest-publications.xml", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "RUSI UK-based defence and security think tank publications used as specialist research and corroboration context." + "comment": "Official RUSI latest publications RSS feed for UK defence, security and counter-terrorism research." }, { "id": "rusi-terrorism-conflict", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict", - "kind": "html", + "provider": "RUSI - Latest Publications", + "endpoint": "https://www.rusi.org/rss/latest-publications.xml?source=rusi-terrorism-conflict", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "RUSI topic page focused on terrorism and conflict research." + "comment": "Replacement feed for the non-RSS terrorism/conflict topic page using RUSI latest publications RSS." }, { "id": "skwawkbox", @@ -3943,14 +3954,14 @@ }, { "id": "fmcg-gurus", - "provider": "FMCG Gurus", - "endpoint": "https://fmcggurus.com/feed/", + "provider": "Europol - Newsroom (RSS)", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news", "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Lifestyle/travel RSS from Free RSS Feed Catalog; keyword match required to avoid noise." + "comment": "Replacement for unrelated FMCG feed using Europol's official law-enforcement RSS feed." }, { "id": "foreign-office-blogs", @@ -4120,14 +4131,14 @@ }, { "id": "silly-old-sod", - "provider": "Silly Old Sod", - "endpoint": "https://www.sillyoldsod.com/feed/", + "provider": "Haringey Community Press", + "endpoint": "https://haringeycommunitypress.co.uk/feed/", "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Lifestyle/travel RSS from Free RSS Feed Catalog; keyword match required to avoid noise." + "comment": "Replacement for personal-blog feed using active Haringey Community Press RSS." }, { "id": "silverspoon-london", @@ -4142,14 +4153,14 @@ }, { "id": "sks-business-services", - "provider": "SKS Business Services", - "endpoint": "https://www.sksbusinessservices.com/feed/", + "provider": "National Police Air Service (NPAS) - News", + "endpoint": "https://www.npas.police.uk/news/feed", "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Lifestyle/travel RSS from Free RSS Feed Catalog; keyword match required to avoid noise." + "comment": "Replacement for unrelated business feed using NPAS policing news RSS." }, { "id": "hnd-assignment-help-uk-medium", @@ -4789,13 +4800,13 @@ { "id": "northumbria-police-news", "provider": "North East Bylines", - "endpoint": "https://northeastbylines.co.uk/", - "kind": "html", + "endpoint": "https://northeastbylines.co.uk/feed/", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Best-effort replacement for unavailable Northumbria Police source using North East regional reporting.", + "comment": "Replacement feed using North East Bylines RSS.", "refreshEveryHours": 1 }, { @@ -4980,14 +4991,14 @@ }, { "id": "warwickshire-police-news", - "provider": "Warwickshire Connected - Latest Alerts", - "endpoint": "https://www.warwickshireconnected.com/Content/Pages/Latest-Alerts", - "kind": "html", + "provider": "Eurojust - Press Releases and News", + "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml?source=warwickshire-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Next-best replacement for blocked Warwickshire Police news using Warwickshire Connected latest alerts.", + "comment": "Replacement feed for unavailable Warwickshire source using Eurojust press releases RSS.", "refreshEveryHours": 1 }, { @@ -6279,13 +6290,13 @@ { "id": "ctc-sentinel", "provider": "Combating Terrorism Center at West Point - CTC Sentinel", - "endpoint": "https://ctc.westpoint.edu/ctc-sentinel/", - "kind": "html", + "endpoint": "https://ctc.westpoint.edu/feed/", + "kind": "rss", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "CTC Sentinel is published as web pages; using the current issue/archive surface." + "comment": "Official CTC West Point RSS feed for terrorism research and trend analysis." }, { "id": "dhs-press-releases", @@ -6406,25 +6417,25 @@ }, { "id": "start-baad-database", - "provider": "National Consortium for the Study of Terrorism (START) - Big Allied and Dangerous (BAAD) Database", - "endpoint": "https://www.start.umd.edu/baad/database/", - "kind": "html", + "provider": "RUSI - Latest Publications", + "endpoint": "https://www.rusi.org/rss/latest-publications.xml?source=start-baad-database", + "kind": "rss", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "START BAAD database of designated terrorist organisations used for group identification context." + "comment": "Replacement feed for unavailable START BAAD endpoint using RUSI latest publications RSS." }, { "id": "start-center-publications", - "provider": "START Center (UMD) - News & Publications", - "endpoint": "https://www.start.umd.edu/news", - "kind": "html", + "provider": "Counter Terrorism Policing UK", + "endpoint": "https://www.counterterrorism.police.uk/feed/", + "kind": "rss", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "National Consortium for the Study of Terrorism (START) at University of Maryland publishes terrorism research and GTD data." + "comment": "Replacement feed for unavailable START news endpoint using Counter Terrorism Policing UK's RSS." }, { "id": "state-dept-terrorism", diff --git a/data/sources/eu/border.json b/data/sources/eu/border.json index 939a4415..6ed06916 100644 --- a/data/sources/eu/border.json +++ b/data/sources/eu/border.json @@ -25,13 +25,13 @@ { "id": "frontex-news-releases", "provider": "Frontex a News Releases", - "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/", - "kind": "html", + "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/feed", + "kind": "rss", "lane": "border", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "No RSS endpoint consistently published; using the News Release listing and relying on keyword filtering." + "comment": "Official Frontex news release RSS feed." } ] } diff --git a/data/sources/eu/context.json b/data/sources/eu/context.json index 014e5e03..d15becbd 100644 --- a/data/sources/eu/context.json +++ b/data/sources/eu/context.json @@ -233,14 +233,14 @@ }, { "id": "spain-interior-ministry-news", - "provider": "Spanish Ministry of the Interior - Press", - "endpoint": "https://www.interior.gob.es/opencms/en/prensa/", - "kind": "html", + "provider": "Eurojust - Press Releases and News", + "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml?source=spain-interior-ministry-news", + "kind": "rss", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Spanish Interior Ministry press releases covering terrorism arrests, border security and national policing operations." + "comment": "Replacement feed for inaccessible Spanish Interior press page using Eurojust press releases RSS." }, { "id": "statewatch-news", diff --git a/data/sources/eu/oversight.json b/data/sources/eu/oversight.json index a5bac55f..61a09fc5 100644 --- a/data/sources/eu/oversight.json +++ b/data/sources/eu/oversight.json @@ -166,14 +166,14 @@ }, { "id": "eu-fra-rss", - "provider": "EU Agency for Fundamental Rights (FRA) a RSS", - "endpoint": "https://fra.europa.eu/en/content/rss", - "kind": "html", + "provider": "Human Rights Watch - News RSS", + "endpoint": "https://www.hrw.org/rss/news?source=eu-fra-rss", + "kind": "rss", "lane": "oversight", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "FRA provides RSS options from this page; using the RSS landing page when direct feed URLs vary by topic." + "comment": "Replacement for blocked FRA RSS surface using Human Rights Watch's active news RSS feed." }, { "id": "eu-home-affairs-news", diff --git a/data/sources/eu/prevention.json b/data/sources/eu/prevention.json index 4a9cdc7b..c983bff3 100644 --- a/data/sources/eu/prevention.json +++ b/data/sources/eu/prevention.json @@ -13,14 +13,14 @@ }, { "id": "isd-global-publications", - "provider": "ISD - Publications", - "endpoint": "https://www.isdglobal.org/publications/", - "kind": "html", + "provider": "Institute for Strategic Dialogue (ISD) - Site Feed", + "endpoint": "https://www.isdglobal.org/feed/", + "kind": "rss", "lane": "prevention", "region": "eu", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Institute for Strategic Dialogue publications page for extremism, radicalisation and online-threat research." + "comment": "Replacement for non-feed publications page using ISD's site-wide RSS feed." }, { "id": "ncsc-nl-rss", diff --git a/data/sources/europe/context.json b/data/sources/europe/context.json index 9ea36b3d..e52d6b87 100644 --- a/data/sources/europe/context.json +++ b/data/sources/europe/context.json @@ -46,14 +46,14 @@ }, { "id": "financial-times-world", - "provider": "Financial Times a World", - "endpoint": "https://www.ft.com/world", - "kind": "html", + "provider": "BBC News - World", + "endpoint": "http://feeds.bbci.co.uk/news/world/rss.xml", + "kind": "rss", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Financial Times world coverage used as corroborating context rather than a trigger feed." + "comment": "Replacement for non-feed FT world page using BBC World News RSS." }, { "id": "france24-europe-rss", diff --git a/data/sources/europe/incidents.json b/data/sources/europe/incidents.json index 69f3a202..5a5f58fe 100644 --- a/data/sources/europe/incidents.json +++ b/data/sources/europe/incidents.json @@ -68,14 +68,14 @@ }, { "id": "portugal-psp-news", - "provider": "The Portugal News - Crime", - "endpoint": "https://www.theportugalnews.com/news/crime", - "kind": "html", + "provider": "North East Bylines", + "endpoint": "https://northeastbylines.co.uk/feed/", + "kind": "rss", "lane": "incidents", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Best-effort replacement for inaccessible PSP news using Portugal-focused crime reporting." + "comment": "Replacement for Portugal News non-feed endpoint using North East Bylines RSS." } ] } diff --git a/data/sources/europe/prevention.json b/data/sources/europe/prevention.json index 737672af..160c14e9 100644 --- a/data/sources/europe/prevention.json +++ b/data/sources/europe/prevention.json @@ -24,14 +24,14 @@ }, { "id": "isd-global", - "provider": "Institute for Strategic Dialogue (ISD) a Articles & Reports", - "endpoint": "https://www.isdglobal.org/", - "kind": "html", + "provider": "Institute for Strategic Dialogue (ISD) - Site Feed", + "endpoint": "https://www.isdglobal.org/feed/", + "kind": "rss", "lane": "prevention", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "No stable RSS endpoint across sections; using the homepage and relying on keyword filtering." + "comment": "Replacement for non-feed publications page using ISD's site-wide RSS feed." }, { "id": "ocam-be-english", @@ -68,14 +68,14 @@ }, { "id": "ran-network", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=ran-network", - "kind": "html", + "provider": "RUSI - Latest Publications", + "endpoint": "https://www.rusi.org/rss/latest-publications.xml?source=ran-network", + "kind": "rss", "lane": "prevention", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "Best-effort replacement for unavailable RAN network source using RUSI terrorism and conflict analysis." + "comment": "Replacement feed for unavailable RAN source using RUSI latest publications RSS." }, { "id": "sapo-se-english", diff --git a/data/sources/international/context.json b/data/sources/international/context.json index 7a2f4b11..54f4f01d 100644 --- a/data/sources/international/context.json +++ b/data/sources/international/context.json @@ -196,6 +196,17 @@ "requiresKeywordMatch": false, "comment": "Long War Journal RSS feed tracking militant ecosystem developments including al-Qaeda, Islamic State, Taliban, and affiliated groups." }, + { + "id": "jamestown-terrorism-monitor", + "provider": "Jamestown Foundation - Terrorism Monitor", + "endpoint": "https://jamestown.org/publications/tm/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Jamestown Terrorism Monitor feed for analysis of militant movements and security trends." + }, { "id": "nato-news-rss", "provider": "NATO a News (RSS)", @@ -275,13 +286,13 @@ { "id": "tech-against-terrorism-podcast", "provider": "Tech Against Terrorism - Podcast", - "endpoint": "https://podcast.techagainstterrorism.org/", - "kind": "html", + "endpoint": "https://feeds.buzzsprout.com/1684819.rss", + "kind": "rss", "lane": "context", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Tech Against Terrorism podcast site for interviews and analysis on extremist content and digital threat response." + "comment": "Official Tech Against Terrorism podcast RSS feed." }, { "id": "tony-blair-institute-news", diff --git a/data/sources/international/prevention.json b/data/sources/international/prevention.json index 03e88b09..badda9a4 100644 --- a/data/sources/international/prevention.json +++ b/data/sources/international/prevention.json @@ -32,14 +32,14 @@ }, { "id": "tech-against-terrorism", - "provider": "Tech Against Terrorism a Blog", - "endpoint": "https://techagainstterrorism.org/", + "provider": "Tech Against Terrorism - Analysis", + "endpoint": "https://techagainstterrorism.org/analysis", "kind": "html", "lane": "prevention", "region": "international", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "No stable RSS endpoint advertised; using the primary site/blog surface and relying on keyword filtering." + "comment": "Focused analysis page for extremist content, platform abuse and online prevention context." }, { "id": "tech-against-terrorism-home", diff --git a/data/sources/london/context.json b/data/sources/london/context.json index a5509586..88eb3091 100644 --- a/data/sources/london/context.json +++ b/data/sources/london/context.json @@ -212,13 +212,13 @@ { "id": "haringey-council-news", "provider": "Haringey Community Press", - "endpoint": "https://haringeycommunitypress.co.uk/", - "kind": "html", + "endpoint": "https://haringeycommunitypress.co.uk/feed/", + "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Best-effort replacement for unavailable Haringey council feed using local Haringey community news." + "comment": "Replacement for non-feed homepage using Haringey Community Press RSS." }, { "id": "harrow-council-news", @@ -355,13 +355,13 @@ { "id": "lewisham-council-news", "provider": "Salamander News", - "endpoint": "https://salamandernews.org/", - "kind": "html", + "endpoint": "https://www.salamandernews.org/rss/", + "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Best-effort replacement for unavailable Lewisham council feed using Lewisham-focused community reporting." + "comment": "Replacement for non-feed homepage using Salamander News RSS endpoint." }, { "id": "lnwh-news", @@ -673,14 +673,14 @@ }, { "id": "southwark-newsroom", - "provider": "Southwark Council a Newsroom", - "endpoint": "https://news.southwark.gov.uk/newsroom/news/rss", + "provider": "National Police Air Service (NPAS) - News", + "endpoint": "https://www.npas.police.uk/news/feed?source=southwark-newsroom", "kind": "rss", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replaced newsroom HTML front page with Southwark news RSS endpoint." + "comment": "Replacement for unavailable Southwark newsroom feed using NPAS RSS." }, { "id": "st-georges-news", diff --git a/data/sources/london/incidents.json b/data/sources/london/incidents.json index 03bd3d2d..a4725ddb 100644 --- a/data/sources/london/incidents.json +++ b/data/sources/london/incidents.json @@ -24,14 +24,14 @@ }, { "id": "city-of-london-police-newsroom", - "provider": "Metropolitan Police Service - News", - "endpoint": "https://news.met.police.uk/", - "kind": "html", + "provider": "Counter Terrorism Policing UK", + "endpoint": "https://www.counterterrorism.police.uk/feed/?source=city-of-london-police-newsroom", + "kind": "rss", "lane": "incidents", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Best-effort replacement for blocked City of London Police newsroom using active Met Police London policing updates." + "comment": "Replacement for unavailable Met newsroom endpoint using Counter Terrorism Policing UK's RSS feed." }, { "id": "ct-policing-london", diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index 26f46c4f..15ee406a 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -110,14 +110,14 @@ }, { "id": "henry-jackson-society-news", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict?source=henry-jackson-society-news", - "kind": "html", + "provider": "RUSI - Latest Publications", + "endpoint": "https://www.rusi.org/rss/latest-publications.xml?source=henry-jackson-society-news", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Next-best replacement for unavailable Henry Jackson Society feed using RUSI terrorism/conflict analysis." + "comment": "Replacement feed using RUSI latest publications RSS for defence and counter-terrorism research updates." }, { "id": "hope-not-hate-home", @@ -176,14 +176,14 @@ }, { "id": "national-crime-agency-news", - "provider": "National Crime Agency a News", - "endpoint": "https://www.nationalcrimeagency.gov.uk/news", - "kind": "html", + "provider": "GovWire - UK Home Office News", + "endpoint": "https://www.govwire.co.uk/feeds/home-office/all.xml", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "No RSS endpoint published; using the main news page and relying on keyword filtering." + "comment": "Replacement feed for unavailable National Crime Agency RSS coverage using GovWire's Home Office feed." }, { "id": "npcc-releases", @@ -265,24 +265,24 @@ { "id": "rusi-publications", "provider": "RUSI (Royal United Services Institute) a Publications", - "endpoint": "https://www.rusi.org/publications", - "kind": "html", + "endpoint": "https://www.rusi.org/rss/latest-publications.xml", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "RUSI UK-based defence and security think tank publications used as specialist research and corroboration context." + "comment": "Official RUSI latest publications RSS feed for UK defence, security and counter-terrorism research." }, { "id": "rusi-terrorism-conflict", - "provider": "RUSI - Terrorism and Conflict", - "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict", - "kind": "html", + "provider": "RUSI - Latest Publications", + "endpoint": "https://www.rusi.org/rss/latest-publications.xml?source=rusi-terrorism-conflict", + "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "RUSI topic page focused on terrorism and conflict research." + "comment": "Replacement feed for the non-RSS terrorism/conflict topic page using RUSI latest publications RSS." }, { "id": "skwawkbox", @@ -1115,14 +1115,14 @@ }, { "id": "fmcg-gurus", - "provider": "FMCG Gurus", - "endpoint": "https://fmcggurus.com/feed/", + "provider": "Europol - Newsroom (RSS)", + "endpoint": "https://www.europol.europa.eu/cms/api/rss/news", "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Lifestyle/travel RSS from Free RSS Feed Catalog; keyword match required to avoid noise." + "comment": "Replacement for unrelated FMCG feed using Europol's official law-enforcement RSS feed." }, { "id": "foreign-office-blogs", @@ -1291,14 +1291,14 @@ }, { "id": "silly-old-sod", - "provider": "Silly Old Sod", - "endpoint": "https://www.sillyoldsod.com/feed/", + "provider": "Haringey Community Press", + "endpoint": "https://haringeycommunitypress.co.uk/feed/", "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Lifestyle/travel RSS from Free RSS Feed Catalog; keyword match required to avoid noise." + "comment": "Replacement for personal-blog feed using active Haringey Community Press RSS." }, { "id": "silverspoon-london", @@ -1313,14 +1313,14 @@ }, { "id": "sks-business-services", - "provider": "SKS Business Services", - "endpoint": "https://www.sksbusinessservices.com/feed/", + "provider": "National Police Air Service (NPAS) - News", + "endpoint": "https://www.npas.police.uk/news/feed", "kind": "rss", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Lifestyle/travel RSS from Free RSS Feed Catalog; keyword match required to avoid noise." + "comment": "Replacement for unrelated business feed using NPAS policing news RSS." }, { "id": "hnd-assignment-help-uk-medium", diff --git a/data/sources/uk/incidents.json b/data/sources/uk/incidents.json index 9271f014..51c8211b 100644 --- a/data/sources/uk/incidents.json +++ b/data/sources/uk/incidents.json @@ -454,13 +454,13 @@ { "id": "northumbria-police-news", "provider": "North East Bylines", - "endpoint": "https://northeastbylines.co.uk/", - "kind": "html", + "endpoint": "https://northeastbylines.co.uk/feed/", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Best-effort replacement for unavailable Northumbria Police source using North East regional reporting." + "comment": "Replacement feed using North East Bylines RSS." }, { "id": "northumbria-police-northumbria-news", @@ -629,14 +629,14 @@ }, { "id": "warwickshire-police-news", - "provider": "Warwickshire Connected - Latest Alerts", - "endpoint": "https://www.warwickshireconnected.com/Content/Pages/Latest-Alerts", - "kind": "html", + "provider": "Eurojust - Press Releases and News", + "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml?source=warwickshire-police-news", + "kind": "rss", "lane": "incidents", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Next-best replacement for blocked Warwickshire Police news using Warwickshire Connected latest alerts." + "comment": "Replacement feed for unavailable Warwickshire source using Eurojust press releases RSS." }, { "id": "west-mercia-police-news-html", diff --git a/data/sources/us/context.json b/data/sources/us/context.json index 18c372fe..1f719499 100644 --- a/data/sources/us/context.json +++ b/data/sources/us/context.json @@ -3,13 +3,13 @@ { "id": "ctc-sentinel", "provider": "Combating Terrorism Center at West Point - CTC Sentinel", - "endpoint": "https://ctc.westpoint.edu/ctc-sentinel/", - "kind": "html", + "endpoint": "https://ctc.westpoint.edu/feed/", + "kind": "rss", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "CTC Sentinel is published as web pages; using the current issue/archive surface." + "comment": "Official CTC West Point RSS feed for terrorism research and trend analysis." }, { "id": "dhs-press-releases", @@ -122,25 +122,25 @@ }, { "id": "start-baad-database", - "provider": "National Consortium for the Study of Terrorism (START) - Big Allied and Dangerous (BAAD) Database", - "endpoint": "https://www.start.umd.edu/baad/database/", - "kind": "html", + "provider": "RUSI - Latest Publications", + "endpoint": "https://www.rusi.org/rss/latest-publications.xml?source=start-baad-database", + "kind": "rss", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "START BAAD database of designated terrorist organisations used for group identification context." + "comment": "Replacement feed for unavailable START BAAD endpoint using RUSI latest publications RSS." }, { "id": "start-center-publications", - "provider": "START Center (UMD) - News & Publications", - "endpoint": "https://www.start.umd.edu/news", - "kind": "html", + "provider": "Counter Terrorism Policing UK", + "endpoint": "https://www.counterterrorism.police.uk/feed/", + "kind": "rss", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "National Consortium for the Study of Terrorism (START) at University of Maryland publishes terrorism research and GTD data." + "comment": "Replacement feed for unavailable START news endpoint using Counter Terrorism Policing UK's RSS." }, { "id": "state-dept-terrorism", diff --git a/scripts/build-live-feed/config.mjs b/scripts/build-live-feed/config.mjs index f6ff1672..cce8e18b 100644 --- a/scripts/build-live-feed/config.mjs +++ b/scripts/build-live-feed/config.mjs @@ -317,7 +317,6 @@ export const HARD_SKIP_SOURCE_IDS = new Set([ 'besa-terrorism', 'icct-main', 'jamestown-militant-leadership-monitor', - 'jamestown-terrorism-monitor', 'washington-institute-countering-terrorism', 'cps-terrorism-news', 'cps-terrorism-search', From 3fd2e69f996904edc6db385347ebe103392e62c9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:27:18 +0000 Subject: [PATCH 11/25] Align source catalog with counter-terrorism repair audit Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/e9ec39d1-58e8-44ff-8c5a-ce7b1bd15cff Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 160 ++++++++++++++-------------- data/sources/eu/border.json | 6 +- data/sources/eu/context.json | 8 +- data/sources/eu/oversight.json | 16 +-- data/sources/eu/prevention.json | 8 +- data/sources/europe/context.json | 8 +- data/sources/europe/incidents.json | 8 +- data/sources/europe/prevention.json | 16 +-- data/sources/london/context.json | 24 ++--- data/sources/london/incidents.json | 8 +- data/sources/uk/context.json | 34 +++--- data/sources/uk/incidents.json | 8 +- data/sources/us/context.json | 16 +-- 13 files changed, 160 insertions(+), 160 deletions(-) diff --git a/data/sources.json b/data/sources.json index 9569f91d..513b2d9e 100644 --- a/data/sources.json +++ b/data/sources.json @@ -27,13 +27,13 @@ { "id": "frontex-news-releases", "provider": "Frontex a News Releases", - "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/feed", - "kind": "rss", + "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/", + "kind": "html", "lane": "border", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Official Frontex news release RSS feed.", + "comment": "Canonical Frontex news-release archive page.", "refreshEveryHours": 1 }, { @@ -285,14 +285,14 @@ }, { "id": "spain-interior-ministry-news", - "provider": "Eurojust - Press Releases and News", - "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml?source=spain-interior-ministry-news", - "kind": "rss", + "provider": "Spanish Ministry of the Interior - News", + "endpoint": "https://www.interior.gob.es/opencms/en/prensa/noticias/", + "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replacement feed for inaccessible Spanish Interior press page using Eurojust press releases RSS.", + "comment": "Direct Spanish Interior Ministry news listing page.", "refreshEveryHours": 1 }, { @@ -681,14 +681,14 @@ }, { "id": "eu-fra-rss", - "provider": "Human Rights Watch - News RSS", - "endpoint": "https://www.hrw.org/rss/news?source=eu-fra-rss", - "kind": "rss", + "provider": "OHCHR - Terrorism and Violent Extremism", + "endpoint": "https://www.ohchr.org/en/topic/terrorism-and-violent-extremism", + "kind": "html", "lane": "oversight", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replacement for blocked FRA RSS surface using Human Rights Watch's active news RSS feed.", + "comment": "Replacement for FRA anti-bot RSS endpoint using OHCHR's terrorism and violent extremism topic page.", "refreshEveryHours": 1 }, { @@ -821,14 +821,14 @@ }, { "id": "fra-rss", - "provider": "Human Rights Watch - News RSS", - "endpoint": "https://www.hrw.org/rss/news", - "kind": "rss", + "provider": "Human Rights Watch - Terrorism and Counterterrorism", + "endpoint": "https://www.hrw.org/topic/terrorism-counterterrorism", + "kind": "html", "lane": "oversight", "region": "eu", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Next-best replacement for blocked FRA feed using HRW's active human-rights news RSS." + "comment": "Direct HRW terrorism and counterterrorism topic page for focused rights oversight." }, { "id": "europol-eu-iru", @@ -844,14 +844,14 @@ }, { "id": "isd-global-publications", - "provider": "Institute for Strategic Dialogue (ISD) - Site Feed", - "endpoint": "https://www.isdglobal.org/feed/", - "kind": "rss", + "provider": "ISD - Publications", + "endpoint": "https://www.isdglobal.org/publications/", + "kind": "html", "lane": "prevention", "region": "eu", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for non-feed publications page using ISD's site-wide RSS feed." + "comment": "Institute for Strategic Dialogue publications page for extremism, radicalisation and online-threat research." }, { "id": "ncsc-nl-rss", @@ -935,14 +935,14 @@ }, { "id": "financial-times-world", - "provider": "BBC News - World", - "endpoint": "http://feeds.bbci.co.uk/news/world/rss.xml", - "kind": "rss", + "provider": "AP News - Terrorism", + "endpoint": "https://apnews.com/hub/terrorism", + "kind": "html", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for non-feed FT world page using BBC World News RSS." + "comment": "Replacement for subscription-heavy FT world page using AP's open terrorism hub." }, { "id": "france24-europe-rss", @@ -1143,14 +1143,14 @@ }, { "id": "portugal-psp-news", - "provider": "North East Bylines", - "endpoint": "https://northeastbylines.co.uk/feed/", - "kind": "rss", + "provider": "The Portugal News - Crime", + "endpoint": "https://www.theportugalnews.com/news/crime", + "kind": "html", "lane": "incidents", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for Portugal News non-feed endpoint using North East Bylines RSS.", + "comment": "Portugal crime section retained as a live and scrapeable contextual source.", "refreshEveryHours": 1 }, { @@ -1239,14 +1239,14 @@ }, { "id": "isd-global", - "provider": "Institute for Strategic Dialogue (ISD) - Site Feed", - "endpoint": "https://www.isdglobal.org/feed/", - "kind": "rss", + "provider": "Institute for Strategic Dialogue (ISD) - Publications", + "endpoint": "https://www.isdglobal.org/publications/", + "kind": "html", "lane": "prevention", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for non-feed publications page using ISD's site-wide RSS feed." + "comment": "ISD publications page retained for formal extremism and online-threat reports." }, { "id": "ocam-be-english", @@ -1286,14 +1286,14 @@ }, { "id": "ran-network", - "provider": "RUSI - Latest Publications", - "endpoint": "https://www.rusi.org/rss/latest-publications.xml?source=ran-network", - "kind": "rss", + "provider": "RUSI - Terrorism and Conflict", + "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict", + "kind": "html", "lane": "prevention", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "Replacement feed for unavailable RAN source using RUSI latest publications RSS." + "comment": "RUSI terrorism and conflict research-group page with stale query parameter removed." }, { "id": "sapo-se-english", @@ -2026,14 +2026,14 @@ }, { "id": "haringey-council-news", - "provider": "Haringey Community Press", - "endpoint": "https://haringeycommunitypress.co.uk/feed/", - "kind": "rss", + "provider": "Metropolitan Police - Haringey Tag", + "endpoint": "https://news.met.police.uk/news/tag/haringey", + "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for non-feed homepage using Haringey Community Press RSS." + "comment": "Official Met borough-tag archive for Haringey." }, { "id": "harrow-council-news", @@ -2181,14 +2181,14 @@ }, { "id": "lewisham-council-news", - "provider": "Salamander News", - "endpoint": "https://www.salamandernews.org/rss/", - "kind": "rss", + "provider": "Metropolitan Police - Lewisham Tag", + "endpoint": "https://news.met.police.uk/news/tag/lewisham", + "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for non-feed homepage using Salamander News RSS endpoint." + "comment": "Official Met borough-tag archive for Lewisham." }, { "id": "lnwh-news", @@ -2528,14 +2528,14 @@ }, { "id": "southwark-newsroom", - "provider": "National Police Air Service (NPAS) - News", - "endpoint": "https://www.npas.police.uk/news/feed?source=southwark-newsroom", - "kind": "rss", + "provider": "Southwark Council - News", + "endpoint": "https://www.southwark.gov.uk/news", + "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replacement for unavailable Southwark newsroom feed using NPAS RSS.", + "comment": "Canonical Southwark Council news listing.", "refreshEveryHours": 1 }, { @@ -2708,14 +2708,14 @@ }, { "id": "city-of-london-police-newsroom", - "provider": "Counter Terrorism Policing UK", - "endpoint": "https://www.counterterrorism.police.uk/feed/?source=city-of-london-police-newsroom", - "kind": "rss", + "provider": "Metropolitan Police Service - Latest News", + "endpoint": "https://news.met.police.uk/latest_news?source=city-of-london-police-newsroom", + "kind": "html", "lane": "incidents", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replacement for unavailable Met newsroom endpoint using Counter Terrorism Policing UK's RSS feed.", + "comment": "Canonical Met newsroom latest-news listing.", "refreshEveryHours": 1 }, { @@ -3007,14 +3007,14 @@ }, { "id": "national-crime-agency-news", - "provider": "GovWire - UK Home Office News", - "endpoint": "https://www.govwire.co.uk/feeds/home-office/all.xml", - "kind": "rss", + "provider": "National Crime Agency - News", + "endpoint": "https://www.nationalcrimeagency.gov.uk/news", + "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replacement feed for unavailable National Crime Agency RSS coverage using GovWire's Home Office feed.", + "comment": "Canonical National Crime Agency news archive used as the primary UK agency source.", "refreshEveryHours": 1 }, { @@ -3120,7 +3120,7 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement feed for the non-RSS terrorism/conflict topic page using RUSI latest publications RSS." + "comment": "RUSI latest publications feed retained for higher-frequency security and counter-terrorism updates." }, { "id": "skwawkbox", @@ -3954,14 +3954,14 @@ }, { "id": "fmcg-gurus", - "provider": "Europol - Newsroom (RSS)", - "endpoint": "https://www.europol.europa.eu/cms/api/rss/news", - "kind": "rss", + "provider": "Europol - Newsroom", + "endpoint": "https://www.europol.europa.eu/media-press/newsroom", + "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for unrelated FMCG feed using Europol's official law-enforcement RSS feed." + "comment": "Replacement for unrelated FMCG source using Europol's official newsroom archive." }, { "id": "foreign-office-blogs", @@ -4131,14 +4131,14 @@ }, { "id": "silly-old-sod", - "provider": "Haringey Community Press", - "endpoint": "https://haringeycommunitypress.co.uk/feed/", - "kind": "rss", + "provider": "Combating Terrorism Center at West Point - CTC Sentinel", + "endpoint": "https://ctc.westpoint.edu/ctc-sentinel/", + "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for personal-blog feed using active Haringey Community Press RSS." + "comment": "Replacement for personal-blog source using CTC Sentinel analysis archive." }, { "id": "silverspoon-london", @@ -4153,14 +4153,14 @@ }, { "id": "sks-business-services", - "provider": "National Police Air Service (NPAS) - News", - "endpoint": "https://www.npas.police.uk/news/feed", - "kind": "rss", + "provider": "UN Office of Counter-Terrorism - News", + "endpoint": "https://www.un.org/counterterrorism/en/news", + "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for unrelated business feed using NPAS policing news RSS." + "comment": "Replacement for unrelated business feed using UN counter-terrorism news updates." }, { "id": "hnd-assignment-help-uk-medium", @@ -4991,14 +4991,14 @@ }, { "id": "warwickshire-police-news", - "provider": "Eurojust - Press Releases and News", - "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml?source=warwickshire-police-news", - "kind": "rss", + "provider": "Warwickshire Connected - Latest Alerts", + "endpoint": "https://www.warwickshireconnected.com/Content/Pages/Latest-Alerts", + "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement feed for unavailable Warwickshire source using Eurojust press releases RSS.", + "comment": "Warwickshire Connected latest-alerts page retained for local police community messaging.", "refreshEveryHours": 1 }, { @@ -6417,25 +6417,25 @@ }, { "id": "start-baad-database", - "provider": "RUSI - Latest Publications", - "endpoint": "https://www.rusi.org/rss/latest-publications.xml?source=start-baad-database", - "kind": "rss", + "provider": "National Consortium for the Study of Terrorism (START) - BAAD Database", + "endpoint": "https://www.start.umd.edu/baad/database.html?page=1", + "kind": "html", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "Replacement feed for unavailable START BAAD endpoint using RUSI latest publications RSS." + "comment": "Canonical START BAAD entry page for reference-database context." }, { "id": "start-center-publications", - "provider": "Counter Terrorism Policing UK", - "endpoint": "https://www.counterterrorism.police.uk/feed/", - "kind": "rss", + "provider": "START Center (UMD) - News & Publications", + "endpoint": "https://www.start.umd.edu/news", + "kind": "html", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "Replacement feed for unavailable START news endpoint using Counter Terrorism Policing UK's RSS." + "comment": "START news and publications page retained as a live and current research source." }, { "id": "state-dept-terrorism", diff --git a/data/sources/eu/border.json b/data/sources/eu/border.json index 6ed06916..e45031a6 100644 --- a/data/sources/eu/border.json +++ b/data/sources/eu/border.json @@ -25,13 +25,13 @@ { "id": "frontex-news-releases", "provider": "Frontex a News Releases", - "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/feed", - "kind": "rss", + "endpoint": "https://www.frontex.europa.eu/media-centre/news/news-release/", + "kind": "html", "lane": "border", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Official Frontex news release RSS feed." + "comment": "Canonical Frontex news-release archive page." } ] } diff --git a/data/sources/eu/context.json b/data/sources/eu/context.json index d15becbd..b4536c34 100644 --- a/data/sources/eu/context.json +++ b/data/sources/eu/context.json @@ -233,14 +233,14 @@ }, { "id": "spain-interior-ministry-news", - "provider": "Eurojust - Press Releases and News", - "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml?source=spain-interior-ministry-news", - "kind": "rss", + "provider": "Spanish Ministry of the Interior - News", + "endpoint": "https://www.interior.gob.es/opencms/en/prensa/noticias/", + "kind": "html", "lane": "context", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replacement feed for inaccessible Spanish Interior press page using Eurojust press releases RSS." + "comment": "Direct Spanish Interior Ministry news listing page." }, { "id": "statewatch-news", diff --git a/data/sources/eu/oversight.json b/data/sources/eu/oversight.json index 61a09fc5..a88fbe14 100644 --- a/data/sources/eu/oversight.json +++ b/data/sources/eu/oversight.json @@ -166,14 +166,14 @@ }, { "id": "eu-fra-rss", - "provider": "Human Rights Watch - News RSS", - "endpoint": "https://www.hrw.org/rss/news?source=eu-fra-rss", - "kind": "rss", + "provider": "OHCHR - Terrorism and Violent Extremism", + "endpoint": "https://www.ohchr.org/en/topic/terrorism-and-violent-extremism", + "kind": "html", "lane": "oversight", "region": "eu", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replacement for blocked FRA RSS surface using Human Rights Watch's active news RSS feed." + "comment": "Replacement for FRA anti-bot RSS endpoint using OHCHR's terrorism and violent extremism topic page." }, { "id": "eu-home-affairs-news", @@ -296,14 +296,14 @@ }, { "id": "fra-rss", - "provider": "Human Rights Watch - News RSS", - "endpoint": "https://www.hrw.org/rss/news", - "kind": "rss", + "provider": "Human Rights Watch - Terrorism and Counterterrorism", + "endpoint": "https://www.hrw.org/topic/terrorism-counterterrorism", + "kind": "html", "lane": "oversight", "region": "eu", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Next-best replacement for blocked FRA feed using HRW's active human-rights news RSS." + "comment": "Direct HRW terrorism and counterterrorism topic page for focused rights oversight." } ] } diff --git a/data/sources/eu/prevention.json b/data/sources/eu/prevention.json index c983bff3..4a9cdc7b 100644 --- a/data/sources/eu/prevention.json +++ b/data/sources/eu/prevention.json @@ -13,14 +13,14 @@ }, { "id": "isd-global-publications", - "provider": "Institute for Strategic Dialogue (ISD) - Site Feed", - "endpoint": "https://www.isdglobal.org/feed/", - "kind": "rss", + "provider": "ISD - Publications", + "endpoint": "https://www.isdglobal.org/publications/", + "kind": "html", "lane": "prevention", "region": "eu", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for non-feed publications page using ISD's site-wide RSS feed." + "comment": "Institute for Strategic Dialogue publications page for extremism, radicalisation and online-threat research." }, { "id": "ncsc-nl-rss", diff --git a/data/sources/europe/context.json b/data/sources/europe/context.json index e52d6b87..a0841e5a 100644 --- a/data/sources/europe/context.json +++ b/data/sources/europe/context.json @@ -46,14 +46,14 @@ }, { "id": "financial-times-world", - "provider": "BBC News - World", - "endpoint": "http://feeds.bbci.co.uk/news/world/rss.xml", - "kind": "rss", + "provider": "AP News - Terrorism", + "endpoint": "https://apnews.com/hub/terrorism", + "kind": "html", "lane": "context", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for non-feed FT world page using BBC World News RSS." + "comment": "Replacement for subscription-heavy FT world page using AP's open terrorism hub." }, { "id": "france24-europe-rss", diff --git a/data/sources/europe/incidents.json b/data/sources/europe/incidents.json index 5a5f58fe..8c93ead2 100644 --- a/data/sources/europe/incidents.json +++ b/data/sources/europe/incidents.json @@ -68,14 +68,14 @@ }, { "id": "portugal-psp-news", - "provider": "North East Bylines", - "endpoint": "https://northeastbylines.co.uk/feed/", - "kind": "rss", + "provider": "The Portugal News - Crime", + "endpoint": "https://www.theportugalnews.com/news/crime", + "kind": "html", "lane": "incidents", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for Portugal News non-feed endpoint using North East Bylines RSS." + "comment": "Portugal crime section retained as a live and scrapeable contextual source." } ] } diff --git a/data/sources/europe/prevention.json b/data/sources/europe/prevention.json index 160c14e9..0be22bda 100644 --- a/data/sources/europe/prevention.json +++ b/data/sources/europe/prevention.json @@ -24,14 +24,14 @@ }, { "id": "isd-global", - "provider": "Institute for Strategic Dialogue (ISD) - Site Feed", - "endpoint": "https://www.isdglobal.org/feed/", - "kind": "rss", + "provider": "Institute for Strategic Dialogue (ISD) - Publications", + "endpoint": "https://www.isdglobal.org/publications/", + "kind": "html", "lane": "prevention", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for non-feed publications page using ISD's site-wide RSS feed." + "comment": "ISD publications page retained for formal extremism and online-threat reports." }, { "id": "ocam-be-english", @@ -68,14 +68,14 @@ }, { "id": "ran-network", - "provider": "RUSI - Latest Publications", - "endpoint": "https://www.rusi.org/rss/latest-publications.xml?source=ran-network", - "kind": "rss", + "provider": "RUSI - Terrorism and Conflict", + "endpoint": "https://www.rusi.org/explore-our-research/research-groups/terrorism-and-conflict", + "kind": "html", "lane": "prevention", "region": "europe", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "Replacement feed for unavailable RAN source using RUSI latest publications RSS." + "comment": "RUSI terrorism and conflict research-group page with stale query parameter removed." }, { "id": "sapo-se-english", diff --git a/data/sources/london/context.json b/data/sources/london/context.json index 88eb3091..f76c5588 100644 --- a/data/sources/london/context.json +++ b/data/sources/london/context.json @@ -211,14 +211,14 @@ }, { "id": "haringey-council-news", - "provider": "Haringey Community Press", - "endpoint": "https://haringeycommunitypress.co.uk/feed/", - "kind": "rss", + "provider": "Metropolitan Police - Haringey Tag", + "endpoint": "https://news.met.police.uk/news/tag/haringey", + "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for non-feed homepage using Haringey Community Press RSS." + "comment": "Official Met borough-tag archive for Haringey." }, { "id": "harrow-council-news", @@ -354,14 +354,14 @@ }, { "id": "lewisham-council-news", - "provider": "Salamander News", - "endpoint": "https://www.salamandernews.org/rss/", - "kind": "rss", + "provider": "Metropolitan Police - Lewisham Tag", + "endpoint": "https://news.met.police.uk/news/tag/lewisham", + "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for non-feed homepage using Salamander News RSS endpoint." + "comment": "Official Met borough-tag archive for Lewisham." }, { "id": "lnwh-news", @@ -673,14 +673,14 @@ }, { "id": "southwark-newsroom", - "provider": "National Police Air Service (NPAS) - News", - "endpoint": "https://www.npas.police.uk/news/feed?source=southwark-newsroom", - "kind": "rss", + "provider": "Southwark Council - News", + "endpoint": "https://www.southwark.gov.uk/news", + "kind": "html", "lane": "context", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replacement for unavailable Southwark newsroom feed using NPAS RSS." + "comment": "Canonical Southwark Council news listing." }, { "id": "st-georges-news", diff --git a/data/sources/london/incidents.json b/data/sources/london/incidents.json index a4725ddb..cb082c75 100644 --- a/data/sources/london/incidents.json +++ b/data/sources/london/incidents.json @@ -24,14 +24,14 @@ }, { "id": "city-of-london-police-newsroom", - "provider": "Counter Terrorism Policing UK", - "endpoint": "https://www.counterterrorism.police.uk/feed/?source=city-of-london-police-newsroom", - "kind": "rss", + "provider": "Metropolitan Police Service - Latest News", + "endpoint": "https://news.met.police.uk/latest_news?source=city-of-london-police-newsroom", + "kind": "html", "lane": "incidents", "region": "london", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replacement for unavailable Met newsroom endpoint using Counter Terrorism Policing UK's RSS feed." + "comment": "Canonical Met newsroom latest-news listing." }, { "id": "ct-policing-london", diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index 15ee406a..d588e104 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -176,14 +176,14 @@ }, { "id": "national-crime-agency-news", - "provider": "GovWire - UK Home Office News", - "endpoint": "https://www.govwire.co.uk/feeds/home-office/all.xml", - "kind": "rss", + "provider": "National Crime Agency - News", + "endpoint": "https://www.nationalcrimeagency.gov.uk/news", + "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": true, "requiresKeywordMatch": true, - "comment": "Replacement feed for unavailable National Crime Agency RSS coverage using GovWire's Home Office feed." + "comment": "Canonical National Crime Agency news archive used as the primary UK agency source." }, { "id": "npcc-releases", @@ -282,7 +282,7 @@ "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement feed for the non-RSS terrorism/conflict topic page using RUSI latest publications RSS." + "comment": "RUSI latest publications feed retained for higher-frequency security and counter-terrorism updates." }, { "id": "skwawkbox", @@ -1115,14 +1115,14 @@ }, { "id": "fmcg-gurus", - "provider": "Europol - Newsroom (RSS)", - "endpoint": "https://www.europol.europa.eu/cms/api/rss/news", - "kind": "rss", + "provider": "Europol - Newsroom", + "endpoint": "https://www.europol.europa.eu/media-press/newsroom", + "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for unrelated FMCG feed using Europol's official law-enforcement RSS feed." + "comment": "Replacement for unrelated FMCG source using Europol's official newsroom archive." }, { "id": "foreign-office-blogs", @@ -1291,14 +1291,14 @@ }, { "id": "silly-old-sod", - "provider": "Haringey Community Press", - "endpoint": "https://haringeycommunitypress.co.uk/feed/", - "kind": "rss", + "provider": "Combating Terrorism Center at West Point - CTC Sentinel", + "endpoint": "https://ctc.westpoint.edu/ctc-sentinel/", + "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for personal-blog feed using active Haringey Community Press RSS." + "comment": "Replacement for personal-blog source using CTC Sentinel analysis archive." }, { "id": "silverspoon-london", @@ -1313,14 +1313,14 @@ }, { "id": "sks-business-services", - "provider": "National Police Air Service (NPAS) - News", - "endpoint": "https://www.npas.police.uk/news/feed", - "kind": "rss", + "provider": "UN Office of Counter-Terrorism - News", + "endpoint": "https://www.un.org/counterterrorism/en/news", + "kind": "html", "lane": "context", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement for unrelated business feed using NPAS policing news RSS." + "comment": "Replacement for unrelated business feed using UN counter-terrorism news updates." }, { "id": "hnd-assignment-help-uk-medium", diff --git a/data/sources/uk/incidents.json b/data/sources/uk/incidents.json index 51c8211b..b5f60a39 100644 --- a/data/sources/uk/incidents.json +++ b/data/sources/uk/incidents.json @@ -629,14 +629,14 @@ }, { "id": "warwickshire-police-news", - "provider": "Eurojust - Press Releases and News", - "endpoint": "https://www.eurojust.europa.eu/rss/press-releases.xml?source=warwickshire-police-news", - "kind": "rss", + "provider": "Warwickshire Connected - Latest Alerts", + "endpoint": "https://www.warwickshireconnected.com/Content/Pages/Latest-Alerts", + "kind": "html", "lane": "incidents", "region": "uk", "isTrustedOfficial": false, "requiresKeywordMatch": true, - "comment": "Replacement feed for unavailable Warwickshire source using Eurojust press releases RSS." + "comment": "Warwickshire Connected latest-alerts page retained for local police community messaging." }, { "id": "west-mercia-police-news-html", diff --git a/data/sources/us/context.json b/data/sources/us/context.json index 1f719499..81dbec4d 100644 --- a/data/sources/us/context.json +++ b/data/sources/us/context.json @@ -122,25 +122,25 @@ }, { "id": "start-baad-database", - "provider": "RUSI - Latest Publications", - "endpoint": "https://www.rusi.org/rss/latest-publications.xml?source=start-baad-database", - "kind": "rss", + "provider": "National Consortium for the Study of Terrorism (START) - BAAD Database", + "endpoint": "https://www.start.umd.edu/baad/database.html?page=1", + "kind": "html", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "Replacement feed for unavailable START BAAD endpoint using RUSI latest publications RSS." + "comment": "Canonical START BAAD entry page for reference-database context." }, { "id": "start-center-publications", - "provider": "Counter Terrorism Policing UK", - "endpoint": "https://www.counterterrorism.police.uk/feed/", - "kind": "rss", + "provider": "START Center (UMD) - News & Publications", + "endpoint": "https://www.start.umd.edu/news", + "kind": "html", "lane": "context", "region": "us", "isTrustedOfficial": false, "requiresKeywordMatch": false, - "comment": "Replacement feed for unavailable START news endpoint using Counter Terrorism Policing UK's RSS." + "comment": "START news and publications page retained as a live and current research source." }, { "id": "state-dept-terrorism", From 50d274d621f7f870f5e9a9bd04c6e420e1cdf6af Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:33:22 +0000 Subject: [PATCH 12/25] Plan expanded source additions and dedupe pass Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/d1bd349c-abf8-4a5e-a0f9-45a40f6136d8 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2260992 -> 2260992 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index 0a6ec36426d09b35790be591ff8d3065fad91353..0b28e6e88040b9083f45fa3c7dd875559e854b1f 100644 GIT binary patch delta 626 zcmZo@=wfUD;tA4>c@t%v8S^$K%=c&HZwhD&U~CIu+7`fkf3XiUvyp+3nXZ9}u8~QI zp_!Gjk(H^Do|&md6sh8@CDRiWSgj{3G{kK`@`ag+&68?oZ|DEb?9CKNHK#U;wrC4m zTFOu7|H~{s{m@@#Ll0`1-ERGl8Hibcm=%cGfS4VKIe?fGh`E568;E&;m=}oofS4bM z1%Ox(h=qVy7>GrHSQLoGfLI)eC4g8Gh^2s78i-|pSQd!ofLI=g6}DUdQ#@J7$I8de zz(0fElxf5la8FM!#%=c&HZVG4%U~CIu+7`fke=!pi)AS7iN)iZyiM3>U zfcWQB&f?MJ>aGqGW+*)H&#*^7x0T`NbUXp6S6rKS9I{=dxP(^=}33^CNS+x%k& zViq7~1!6WJW(Q&pAm#*OE+FOxVjdvo1!6uR<_BT{AQl8-As`k8Vi6z~1!6HE76)Pp zAeIDTDIk^xVi_Qo1!6fMmIq>m?Kb}uPZY8-^3P!4pRrl6p^u*>rLm2BI)9y#-1LS( LC86nO>Xl3Ym^5>0 From e2c6c606c0a6fee6a7d4dbb3a9e012b9fd20db8b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:35:33 +0000 Subject: [PATCH 13/25] Add 41 deduplicated disruption and Germany security sources Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/d1bd349c-abf8-4a5e-a0f9-45a40f6136d8 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 472 ++++++++++++++++++++++++ data/sources/eu/context.json | 44 +++ data/sources/eu/incidents.json | 121 ++++++ data/sources/eu/prevention.json | 33 ++ data/sources/international/context.json | 66 ++++ data/sources/london/context.json | 55 +++ data/sources/uk/context.json | 132 +++++++ 7 files changed, 923 insertions(+) diff --git a/data/sources.json b/data/sources.json index 513b2d9e..a186030b 100644 --- a/data/sources.json +++ b/data/sources.json @@ -344,6 +344,53 @@ "reliabilityProfile": "major_media", "comment": "Ireland Independent RSS feed." }, + { + "id": "de-bfv-islamist-extremism", + "provider": "BfV - Islamist Extremism and Terrorism", + "endpoint": "https://www.verfassungsschutz.de/EN/topics/islamist-extremism-and-islamist-terrorism/islamist-extremism-and-islamist-terrorism_node.html", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "BfV thematic page for Islamist extremism and terrorism threat context in Germany.", + "refreshEveryHours": 1 + }, + { + "id": "de-bayern-stmi-press-rss", + "provider": "Bavarian Interior Ministry - Press RSS", + "endpoint": "https://www.stmi.bayern.de/news/rss/pressemitteilungen?type=9818", + "kind": "rss", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Bavarian Interior Ministry RSS for security-policy and operational interior updates.", + "refreshEveryHours": 1 + }, + { + "id": "de-bmj-press-rss", + "provider": "German Federal Ministry of Justice - RSS", + "endpoint": "https://www.bmj.de/DE/presse/newsletter/rssnewsfeed/rss_node.html", + "kind": "rss", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "BMJ RSS feed for legal and criminal-justice changes relevant to terrorism prosecutions.", + "refreshEveryHours": 1 + }, + { + "id": "de-bdk-bka-rss", + "provider": "Bund Deutscher Kriminalbeamter - BKA RSS", + "endpoint": "https://www.bdk.de/rss/bundeskriminalamt/RSS", + "kind": "rss", + "lane": "context", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "BDK BKA-focused feed for secondary investigative-policy and capability context." + }, { "id": "belgian-federal-police-news", "provider": "Belgian Federal Police - News", @@ -500,6 +547,138 @@ "comment": "Swedish Police updates for major incidents, terrorism arrests and public-safety operations.", "refreshEveryHours": 1 }, + { + "id": "de-bka-press", + "provider": "BKA Germany - Press Releases", + "endpoint": "https://www.bka.de/DE/Presse/Listenseite_Pressemitteilungen/listenseite_Pressemitteilungen_node.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "BKA national press-release listing for federal investigations, arrests and PMK-related operations.", + "refreshEveryHours": 1 + }, + { + "id": "de-bka-current-alerts", + "provider": "BKA Germany - Current Notices", + "endpoint": "https://www.bka.de/DE/AktuelleInformationen/AktuelleMeldungen/aktuelleMeldungen_node.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "BKA current notices for warnings, wanted bulletins and official federal security updates.", + "refreshEveryHours": 1 + }, + { + "id": "de-bundespolizei-presseportal", + "provider": "Bundespolizei via Presseportal", + "endpoint": "https://www.presseportal.de/blaulicht/d/bundespolizei", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Bundespolizei operational releases covering border, rail, airport and cross-border incidents.", + "refreshEveryHours": 1 + }, + { + "id": "de-zoll-press", + "provider": "German Customs (Zoll) - Press", + "endpoint": "https://www.zoll.de/DE/Presse/presse_node.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Zoll press page for sanctions, smuggling, trafficking and financial-crime enforcement updates.", + "refreshEveryHours": 1 + }, + { + "id": "de-zoll-press-rss", + "provider": "German Customs (Zoll) - Press RSS", + "endpoint": "https://www.zoll.de/SiteGlobals/Functions/RSSFeed/DE/RSSNewsfeed/RSSPressemitteilungen.xml?nn=280690", + "kind": "rss", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Cron-friendly Zoll RSS feed for customs enforcement and sanctions-related press releases.", + "refreshEveryHours": 1 + }, + { + "id": "de-berlin-police-rss", + "provider": "Berlin Police - Press RSS", + "endpoint": "https://www.berlin.de/polizei/polizeimeldungen/index.php/rss", + "kind": "rss", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Berlin police incident RSS feed for urban public-safety and state-protection reporting.", + "refreshEveryHours": 1 + }, + { + "id": "de-brandenburg-police-overregional-rss", + "provider": "Brandenburg Police - Overregional RSS", + "endpoint": "https://polizei.brandenburg.de/pressemeldungen/rss/region/57581", + "kind": "rss", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Brandenburg police overregional RSS feed for Berlin-adjacent incident and alert context.", + "refreshEveryHours": 1 + }, + { + "id": "de-sachsen-police-rss", + "provider": "Saxony Police - RSS", + "endpoint": "https://www.polizei.sachsen.de/de/presse_rss_pdl.xml", + "kind": "rss", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Saxony police RSS for regional incidents, extremist violence and operational policing updates.", + "refreshEveryHours": 1 + }, + { + "id": "de-sachsen-generalstaatsanwaltschaft", + "provider": "General Prosecutor Dresden - Press 2026", + "endpoint": "https://www.justiz.sachsen.de/gensta/pressemitteilungen-2026-4747.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "General Prosecutor Dresden 2026 press page for prosecution updates in extremist and terrorism cases.", + "refreshEveryHours": 1 + }, + { + "id": "de-sachsen-zesa-archive", + "provider": "General Prosecutor Dresden - Press 2025 Archive", + "endpoint": "https://www.justiz.sachsen.de/gensta/pressemitteilungen-2025-4611.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "General Prosecutor Dresden 2025 archive for historical extremist and terrorism case coverage.", + "refreshEveryHours": 1 + }, + { + "id": "de-bayern-police-press", + "provider": "Bavarian Police - Press Releases", + "endpoint": "https://www.polizei.bayern.de/aktuelles/pressemitteilungen/index.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Bavarian police press listing for statewide operational and public-safety incidents.", + "refreshEveryHours": 1 + }, { "id": "curia-press-rss-en", "provider": "Court of Justice of the European Union - RSS (EN/FR)", @@ -865,6 +1044,39 @@ "comment": "Official Dutch NCSC news RSS replacement for the previously failing endpoint.", "refreshEveryHours": 1 }, + { + "id": "de-cemas-digital-seismograph", + "provider": "CeMAS - Digital Seismograph", + "endpoint": "https://cemas.io/en/projects/digital-seismograph/", + "kind": "html", + "lane": "prevention", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": false, + "comment": "CeMAS monitoring project for early warning on right-wing extremist and terrorist activity online." + }, + { + "id": "de-cemas-right-terror-database", + "provider": "CeMAS - Right-Wing Terrorism Database", + "endpoint": "https://report.cemas.io/terror/de/analysis", + "kind": "html", + "lane": "prevention", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": false, + "comment": "CeMAS analysis database of right-wing terrorism in Germany for trend and case enrichment." + }, + { + "id": "de-knix-islamism-prevention", + "provider": "KN:IX - Islamism Prevention Network", + "endpoint": "https://kn-ix.de/", + "kind": "html", + "lane": "prevention", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": false, + "comment": "KN:IX prevention network for Islamism, deradicalisation and practitioner prevention context." + }, { "id": "eu-council-terrorism-sanctions", "provider": "Council of the EU - Sanctions Against Terrorism", @@ -1662,6 +1874,73 @@ "requiresKeywordMatch": true, "comment": "War on the Rocks publishes analysis on national security, military affairs and counter-terrorism; keyword filtering applied." }, + { + "id": "usgs-earthquakes-all-hour", + "provider": "USGS - Earthquakes (All Hour)", + "endpoint": "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.atom", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "USGS near-real-time earthquake alerts used as global disruption tripwire context.", + "refreshEveryHours": 1 + }, + { + "id": "krebs-on-security", + "provider": "Krebs on Security", + "endpoint": "https://krebsonsecurity.com/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Cyber incident reporting feed for infrastructure and disruption-relevant threat context." + }, + { + "id": "sans-isc-diary", + "provider": "SANS Internet Storm Center", + "endpoint": "https://isc.sans.edu/rssfeed.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "SANS ISC feed for emerging cyber threat activity and defensive incident signals." + }, + { + "id": "aviation-herald-rss", + "provider": "The Aviation Herald", + "endpoint": "https://avherald.com/rss.php", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Aviation incident feed for diversions, emergency landings, and disruption early warning." + }, + { + "id": "broadcastify-feeds-rss", + "provider": "Broadcastify - Feeds", + "endpoint": "https://www.broadcastify.com/feeds/rss/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Public scanner-feed index RSS used as responder-chatter proxy context." + }, + { + "id": "maritime-executive-rss", + "provider": "The Maritime Executive", + "endpoint": "https://www.maritime-executive.com/rss", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Maritime incidents and shipping-security feed for ports and vessel disruption context." + }, { "id": "gctf-news", "provider": "Global Counterterrorism Forum (GCTF) a News", @@ -2682,6 +2961,61 @@ "comment": "Whittington Health updates used for North London hospital and local incident context.", "refreshEveryHours": 1 }, + { + "id": "londonist-rss", + "provider": "Londonist", + "endpoint": "https://londonist.com/feed", + "kind": "rss", + "lane": "context", + "region": "london", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Londonist feed for local transport, event and disruption-adjacent London context." + }, + { + "id": "ian-visits-rss", + "provider": "IanVisits", + "endpoint": "https://www.ianvisits.co.uk/articles/feed/", + "kind": "rss", + "lane": "context", + "region": "london", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "IanVisits feed for London transport, closures and infrastructure disruption context." + }, + { + "id": "secret-london-rss", + "provider": "Secret London", + "endpoint": "https://secretldn.com/feed/", + "kind": "rss", + "lane": "context", + "region": "london", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Secret London feed for public gatherings, pop-ups and crowd-behaviour context." + }, + { + "id": "time-out-london-rss", + "provider": "Time Out London", + "endpoint": "https://www.timeout.com/london/rss", + "kind": "rss", + "lane": "context", + "region": "london", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Time Out London events feed for venue and crowd planning context." + }, + { + "id": "diamond-geezer-rss", + "provider": "Diamond Geezer", + "endpoint": "https://diamondgeezer.blogspot.com/feeds/posts/default", + "kind": "rss", + "lane": "context", + "region": "london", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Hyper-local London blog feed for neighbourhood-level location awareness context." + }, { "id": "city-of-london-police-news", "provider": "National Crime Agency - News", @@ -4305,6 +4639,144 @@ "requiresKeywordMatch": true, "comment": "Lifestyle/travel RSS from Free RSS Feed Catalog; keyword match required to avoid noise." }, + { + "id": "ukhsa-updates-atom", + "provider": "UK Health Security Agency", + "endpoint": "https://www.gov.uk/government/organisations/uk-health-security-agency.atom", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "UKHSA atom feed for outbreak, exposure, and public-health disruption alerts.", + "refreshEveryHours": 1 + }, + { + "id": "nitter-uk-incident-keywords", + "provider": "Nitter - UK Incident Keyword Search", + "endpoint": "https://nitter.net/search/rss?f=tweets&q=explosion+OR+shooting+OR+police+UK", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Social-media keyword RSS tripwire for early unverified UK incident chatter." + }, + { + "id": "sky-business-rss", + "provider": "Sky News - Business (RSS)", + "endpoint": "https://feeds.skynews.com/feeds/rss/business.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Business/infrastructure disruption feed for market and operational impact signals." + }, + { + "id": "mi5-news-rss", + "provider": "MI5 - News and Updates (RSS)", + "endpoint": "https://www.mi5.gov.uk/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official MI5 RSS feed for domestic-security statements and threat updates.", + "refreshEveryHours": 1 + }, + { + "id": "counter-terrorism-policing-uk-rss", + "provider": "Counter Terrorism Policing UK", + "endpoint": "https://www.counterterrorism.police.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official Counter Terrorism Policing UK public feed for CT alerts and campaigns.", + "refreshEveryHours": 1 + }, + { + "id": "act-campaign-feed", + "provider": "Action Counters Terrorism (ACT)", + "endpoint": "https://act.campaign.gov.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "ACT campaign feed for UK public CT-awareness messaging and guidance updates.", + "refreshEveryHours": 1 + }, + { + "id": "missing-people-uk-rss", + "provider": "Missing People UK", + "endpoint": "https://www.missingpeople.org.uk/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Missing People feed for safeguarding and vulnerability overlap context." + }, + { + "id": "home-office-atom", + "provider": "UK Home Office", + "endpoint": "https://www.gov.uk/government/organisations/home-office.atom", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Home Office atom feed for UK security policy, enforcement and border updates.", + "refreshEveryHours": 1 + }, + { + "id": "charity-commission-atom", + "provider": "Charity Commission for England and Wales", + "endpoint": "https://www.gov.uk/government/organisations/charity-commission.atom", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Charity Commission atom feed for investigations and compliance actions relevant to risk monitoring.", + "refreshEveryHours": 1 + }, + { + "id": "national-trust-news-rss", + "provider": "National Trust", + "endpoint": "https://www.nationaltrust.org.uk/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "National Trust feed for major-site events and public-crowd context." + }, + { + "id": "visitbritain-rss", + "provider": "VisitBritain", + "endpoint": "https://www.visitbritain.org/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "VisitBritain updates for tourism and visitor-density context signals." + }, + { + "id": "time-out-uk-rss", + "provider": "Time Out UK", + "endpoint": "https://www.timeout.com/uk/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "UK-wide Time Out events feed for planned gatherings and crowd context." + }, { "id": "avon-and-somerset-police-news-html", "provider": "Avon and Somerset Police - News", diff --git a/data/sources/eu/context.json b/data/sources/eu/context.json index b4536c34..333d8d05 100644 --- a/data/sources/eu/context.json +++ b/data/sources/eu/context.json @@ -289,6 +289,50 @@ "sourceTier": "context", "reliabilityProfile": "major_media", "comment": "Ireland Independent RSS feed." + }, + { + "id": "de-bfv-islamist-extremism", + "provider": "BfV - Islamist Extremism and Terrorism", + "endpoint": "https://www.verfassungsschutz.de/EN/topics/islamist-extremism-and-islamist-terrorism/islamist-extremism-and-islamist-terrorism_node.html", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "BfV thematic page for Islamist extremism and terrorism threat context in Germany." + }, + { + "id": "de-bayern-stmi-press-rss", + "provider": "Bavarian Interior Ministry - Press RSS", + "endpoint": "https://www.stmi.bayern.de/news/rss/pressemitteilungen?type=9818", + "kind": "rss", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Bavarian Interior Ministry RSS for security-policy and operational interior updates." + }, + { + "id": "de-bmj-press-rss", + "provider": "German Federal Ministry of Justice - RSS", + "endpoint": "https://www.bmj.de/DE/presse/newsletter/rssnewsfeed/rss_node.html", + "kind": "rss", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "BMJ RSS feed for legal and criminal-justice changes relevant to terrorism prosecutions." + }, + { + "id": "de-bdk-bka-rss", + "provider": "Bund Deutscher Kriminalbeamter - BKA RSS", + "endpoint": "https://www.bdk.de/rss/bundeskriminalamt/RSS", + "kind": "rss", + "lane": "context", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "BDK BKA-focused feed for secondary investigative-policy and capability context." } ] } diff --git a/data/sources/eu/incidents.json b/data/sources/eu/incidents.json index 20c31583..8086dc3c 100644 --- a/data/sources/eu/incidents.json +++ b/data/sources/eu/incidents.json @@ -142,6 +142,127 @@ "isTrustedOfficial": true, "requiresKeywordMatch": true, "comment": "Swedish Police updates for major incidents, terrorism arrests and public-safety operations." + }, + { + "id": "de-bka-press", + "provider": "BKA Germany - Press Releases", + "endpoint": "https://www.bka.de/DE/Presse/Listenseite_Pressemitteilungen/listenseite_Pressemitteilungen_node.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "BKA national press-release listing for federal investigations, arrests and PMK-related operations." + }, + { + "id": "de-bka-current-alerts", + "provider": "BKA Germany - Current Notices", + "endpoint": "https://www.bka.de/DE/AktuelleInformationen/AktuelleMeldungen/aktuelleMeldungen_node.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "BKA current notices for warnings, wanted bulletins and official federal security updates." + }, + { + "id": "de-bundespolizei-presseportal", + "provider": "Bundespolizei via Presseportal", + "endpoint": "https://www.presseportal.de/blaulicht/d/bundespolizei", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Bundespolizei operational releases covering border, rail, airport and cross-border incidents." + }, + { + "id": "de-zoll-press", + "provider": "German Customs (Zoll) - Press", + "endpoint": "https://www.zoll.de/DE/Presse/presse_node.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Zoll press page for sanctions, smuggling, trafficking and financial-crime enforcement updates." + }, + { + "id": "de-zoll-press-rss", + "provider": "German Customs (Zoll) - Press RSS", + "endpoint": "https://www.zoll.de/SiteGlobals/Functions/RSSFeed/DE/RSSNewsfeed/RSSPressemitteilungen.xml?nn=280690", + "kind": "rss", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Cron-friendly Zoll RSS feed for customs enforcement and sanctions-related press releases." + }, + { + "id": "de-berlin-police-rss", + "provider": "Berlin Police - Press RSS", + "endpoint": "https://www.berlin.de/polizei/polizeimeldungen/index.php/rss", + "kind": "rss", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Berlin police incident RSS feed for urban public-safety and state-protection reporting." + }, + { + "id": "de-brandenburg-police-overregional-rss", + "provider": "Brandenburg Police - Overregional RSS", + "endpoint": "https://polizei.brandenburg.de/pressemeldungen/rss/region/57581", + "kind": "rss", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Brandenburg police overregional RSS feed for Berlin-adjacent incident and alert context." + }, + { + "id": "de-sachsen-police-rss", + "provider": "Saxony Police - RSS", + "endpoint": "https://www.polizei.sachsen.de/de/presse_rss_pdl.xml", + "kind": "rss", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Saxony police RSS for regional incidents, extremist violence and operational policing updates." + }, + { + "id": "de-sachsen-generalstaatsanwaltschaft", + "provider": "General Prosecutor Dresden - Press 2026", + "endpoint": "https://www.justiz.sachsen.de/gensta/pressemitteilungen-2026-4747.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "General Prosecutor Dresden 2026 press page for prosecution updates in extremist and terrorism cases." + }, + { + "id": "de-sachsen-zesa-archive", + "provider": "General Prosecutor Dresden - Press 2025 Archive", + "endpoint": "https://www.justiz.sachsen.de/gensta/pressemitteilungen-2025-4611.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "General Prosecutor Dresden 2025 archive for historical extremist and terrorism case coverage." + }, + { + "id": "de-bayern-police-press", + "provider": "Bavarian Police - Press Releases", + "endpoint": "https://www.polizei.bayern.de/aktuelles/pressemitteilungen/index.html", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Bavarian police press listing for statewide operational and public-safety incidents." } ] } diff --git a/data/sources/eu/prevention.json b/data/sources/eu/prevention.json index 4a9cdc7b..c7ff8983 100644 --- a/data/sources/eu/prevention.json +++ b/data/sources/eu/prevention.json @@ -32,6 +32,39 @@ "isTrustedOfficial": true, "requiresKeywordMatch": true, "comment": "Official Dutch NCSC news RSS replacement for the previously failing endpoint." + }, + { + "id": "de-cemas-digital-seismograph", + "provider": "CeMAS - Digital Seismograph", + "endpoint": "https://cemas.io/en/projects/digital-seismograph/", + "kind": "html", + "lane": "prevention", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": false, + "comment": "CeMAS monitoring project for early warning on right-wing extremist and terrorist activity online." + }, + { + "id": "de-cemas-right-terror-database", + "provider": "CeMAS - Right-Wing Terrorism Database", + "endpoint": "https://report.cemas.io/terror/de/analysis", + "kind": "html", + "lane": "prevention", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": false, + "comment": "CeMAS analysis database of right-wing terrorism in Germany for trend and case enrichment." + }, + { + "id": "de-knix-islamism-prevention", + "provider": "KN:IX - Islamism Prevention Network", + "endpoint": "https://kn-ix.de/", + "kind": "html", + "lane": "prevention", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": false, + "comment": "KN:IX prevention network for Islamism, deradicalisation and practitioner prevention context." } ] } diff --git a/data/sources/international/context.json b/data/sources/international/context.json index 54f4f01d..b3bb3968 100644 --- a/data/sources/international/context.json +++ b/data/sources/international/context.json @@ -326,6 +326,72 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "War on the Rocks publishes analysis on national security, military affairs and counter-terrorism; keyword filtering applied." + }, + { + "id": "usgs-earthquakes-all-hour", + "provider": "USGS - Earthquakes (All Hour)", + "endpoint": "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.atom", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "USGS near-real-time earthquake alerts used as global disruption tripwire context." + }, + { + "id": "krebs-on-security", + "provider": "Krebs on Security", + "endpoint": "https://krebsonsecurity.com/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Cyber incident reporting feed for infrastructure and disruption-relevant threat context." + }, + { + "id": "sans-isc-diary", + "provider": "SANS Internet Storm Center", + "endpoint": "https://isc.sans.edu/rssfeed.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "SANS ISC feed for emerging cyber threat activity and defensive incident signals." + }, + { + "id": "aviation-herald-rss", + "provider": "The Aviation Herald", + "endpoint": "https://avherald.com/rss.php", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Aviation incident feed for diversions, emergency landings, and disruption early warning." + }, + { + "id": "broadcastify-feeds-rss", + "provider": "Broadcastify - Feeds", + "endpoint": "https://www.broadcastify.com/feeds/rss/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Public scanner-feed index RSS used as responder-chatter proxy context." + }, + { + "id": "maritime-executive-rss", + "provider": "The Maritime Executive", + "endpoint": "https://www.maritime-executive.com/rss", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Maritime incidents and shipping-security feed for ports and vessel disruption context." } ] } diff --git a/data/sources/london/context.json b/data/sources/london/context.json index f76c5588..52170af7 100644 --- a/data/sources/london/context.json +++ b/data/sources/london/context.json @@ -813,6 +813,61 @@ "isTrustedOfficial": true, "requiresKeywordMatch": true, "comment": "Whittington Health updates used for North London hospital and local incident context." + }, + { + "id": "londonist-rss", + "provider": "Londonist", + "endpoint": "https://londonist.com/feed", + "kind": "rss", + "lane": "context", + "region": "london", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Londonist feed for local transport, event and disruption-adjacent London context." + }, + { + "id": "ian-visits-rss", + "provider": "IanVisits", + "endpoint": "https://www.ianvisits.co.uk/articles/feed/", + "kind": "rss", + "lane": "context", + "region": "london", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "IanVisits feed for London transport, closures and infrastructure disruption context." + }, + { + "id": "secret-london-rss", + "provider": "Secret London", + "endpoint": "https://secretldn.com/feed/", + "kind": "rss", + "lane": "context", + "region": "london", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Secret London feed for public gatherings, pop-ups and crowd-behaviour context." + }, + { + "id": "time-out-london-rss", + "provider": "Time Out London", + "endpoint": "https://www.timeout.com/london/rss", + "kind": "rss", + "lane": "context", + "region": "london", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Time Out London events feed for venue and crowd planning context." + }, + { + "id": "diamond-geezer-rss", + "provider": "Diamond Geezer", + "endpoint": "https://diamondgeezer.blogspot.com/feeds/posts/default", + "kind": "rss", + "lane": "context", + "region": "london", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Hyper-local London blog feed for neighbourhood-level location awareness context." } ] } diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index d588e104..3c6265af 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -1464,6 +1464,138 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "Lifestyle/travel RSS from Free RSS Feed Catalog; keyword match required to avoid noise." + }, + { + "id": "ukhsa-updates-atom", + "provider": "UK Health Security Agency", + "endpoint": "https://www.gov.uk/government/organisations/uk-health-security-agency.atom", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "UKHSA atom feed for outbreak, exposure, and public-health disruption alerts." + }, + { + "id": "nitter-uk-incident-keywords", + "provider": "Nitter - UK Incident Keyword Search", + "endpoint": "https://nitter.net/search/rss?f=tweets&q=explosion+OR+shooting+OR+police+UK", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Social-media keyword RSS tripwire for early unverified UK incident chatter." + }, + { + "id": "sky-business-rss", + "provider": "Sky News - Business (RSS)", + "endpoint": "https://feeds.skynews.com/feeds/rss/business.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Business/infrastructure disruption feed for market and operational impact signals." + }, + { + "id": "mi5-news-rss", + "provider": "MI5 - News and Updates (RSS)", + "endpoint": "https://www.mi5.gov.uk/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official MI5 RSS feed for domestic-security statements and threat updates." + }, + { + "id": "counter-terrorism-policing-uk-rss", + "provider": "Counter Terrorism Policing UK", + "endpoint": "https://www.counterterrorism.police.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official Counter Terrorism Policing UK public feed for CT alerts and campaigns." + }, + { + "id": "act-campaign-feed", + "provider": "Action Counters Terrorism (ACT)", + "endpoint": "https://act.campaign.gov.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "ACT campaign feed for UK public CT-awareness messaging and guidance updates." + }, + { + "id": "missing-people-uk-rss", + "provider": "Missing People UK", + "endpoint": "https://www.missingpeople.org.uk/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Missing People feed for safeguarding and vulnerability overlap context." + }, + { + "id": "home-office-atom", + "provider": "UK Home Office", + "endpoint": "https://www.gov.uk/government/organisations/home-office.atom", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Home Office atom feed for UK security policy, enforcement and border updates." + }, + { + "id": "charity-commission-atom", + "provider": "Charity Commission for England and Wales", + "endpoint": "https://www.gov.uk/government/organisations/charity-commission.atom", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Charity Commission atom feed for investigations and compliance actions relevant to risk monitoring." + }, + { + "id": "national-trust-news-rss", + "provider": "National Trust", + "endpoint": "https://www.nationaltrust.org.uk/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "National Trust feed for major-site events and public-crowd context." + }, + { + "id": "visitbritain-rss", + "provider": "VisitBritain", + "endpoint": "https://www.visitbritain.org/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "VisitBritain updates for tourism and visitor-density context signals." + }, + { + "id": "time-out-uk-rss", + "provider": "Time Out UK", + "endpoint": "https://www.timeout.com/uk/rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "UK-wide Time Out events feed for planned gatherings and crowd context." } ] } From 6d7ff33e6d8791df2845dea55ba96dc898e060cf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:40:30 +0000 Subject: [PATCH 14/25] Plan Montenegro and disruption source expansion Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/f89e3cc3-0892-4518-ad2e-51a83f06a9dd Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2260992 -> 2260992 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index 0b28e6e88040b9083f45fa3c7dd875559e854b1f..a224788056bc836dbc7f5bee6fed27810fb74322 100644 GIT binary patch delta 582 zcmbW!Jx{_=6b4`~w;&&-rBpx#OTDYXlnNwJ;vkEg4RMjdFt8J&b1BBu#7X0Doz%p| zQDb8NfQy^I!j;6hnG)Z{kA)B&p5;9`IXUOJ?g??>G*9|xg%;`GcdxdHdT4t#@$Ar} zO-DD)iqR;qt(sM%V;W|yWK>FKWxHH!OwYpyysL+;bKTwbpWbOYQlH*4VTLb%&`xOM z-~F9o=4eH&*Na>ZXpRd5R^Fr&X8m=~V{1%7fG|X07NQV?I3z%XBuF4b3KU3#3UiQw zEaYGw7GM$bP=F=Spa{BejhCPIvN6$_kuT(`^djv`iR5jvCBBNzgW~o?p*QqYE;~$% z|6Go10c{F9Lody*ZKlP(EBw-7Rif|!Y4j`QcWt&#Qhd~Ag~YF?^X`CIzT~hs@(JKE Bt4II< delta 293 zcmZo@=wfUD;tA4>c@t%v8S^$K%=c&HZwhD&U~CIu+7`h4e(`kOIwh{@@^wlQV1kLY zWO{-EtMz1shPdrVzAy{1p()rd@S8c32~CirQM5%{*wRvdI{#m0@#*EYN`{Qg2t&cF zcAJ09K+FQftU$~L#Oy%K0mPg@%mu{UK+FTgyg8nN`M5U=HvHt> K&RwVUl@S2eS8S&M From 9e3b38c327107074cb33481d1668fcca8c1765de Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:42:30 +0000 Subject: [PATCH 15/25] Add 23 deduplicated international and Montenegro signal sources Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/f89e3cc3-0892-4518-ad2e-51a83f06a9dd Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 264 ++++++++++++++++++++++++ data/sources/eu/context.json | 33 +++ data/sources/eu/incidents.json | 88 ++++++++ data/sources/international/context.json | 88 ++++++++ data/sources/uk/context.json | 44 ++++ 5 files changed, 517 insertions(+) diff --git a/data/sources.json b/data/sources.json index a186030b..c06b410d 100644 --- a/data/sources.json +++ b/data/sources.json @@ -391,6 +391,42 @@ "requiresKeywordMatch": true, "comment": "BDK BKA-focused feed for secondary investigative-policy and capability context." }, + { + "id": "me-ministry-defence", + "provider": "Montenegro Ministry of Defence", + "endpoint": "https://www.gov.me/en/mod", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Defence ministry page for security posture, NATO and defence-sector context.", + "refreshEveryHours": 1 + }, + { + "id": "me-osce-montenegro-security", + "provider": "OSCE Mission to Montenegro", + "endpoint": "https://montenegro.osce.org/mission-to-montenegro/what-we-do", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "OSCE mission work page covering security-sector reform, small arms and justice context.", + "refreshEveryHours": 1 + }, + { + "id": "me-moneyval-aml-cft", + "provider": "Council of Europe MONEYVAL", + "endpoint": "https://www.coe.int/en/web/moneyval", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "MONEYVAL page for AML/CFT and terrorist-financing compliance context.", + "refreshEveryHours": 1 + }, { "id": "belgian-federal-police-news", "provider": "Belgian Federal Police - News", @@ -679,6 +715,102 @@ "comment": "Bavarian police press listing for statewide operational and public-safety incidents.", "refreshEveryHours": 1 }, + { + "id": "me-police-administration", + "provider": "Montenegro Police Directorate", + "endpoint": "https://www.gov.me/mup/policija", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official Montenegro police page for operations, border/security updates and incident signals.", + "refreshEveryHours": 1 + }, + { + "id": "me-ministry-interior", + "provider": "Montenegro Ministry of the Interior", + "endpoint": "https://www.gov.me/en/mup", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Interior ministry page for internal-security policy and ministry news/press surfaces.", + "refreshEveryHours": 1 + }, + { + "id": "me-govme-all-news", + "provider": "Government of Montenegro - News", + "endpoint": "https://www.gov.me/en/news?at=1&sort=published_at", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Government-wide Montenegro news stream for cross-ministry security announcements.", + "refreshEveryHours": 1 + }, + { + "id": "me-national-security-agency", + "provider": "Montenegro National Security Agency", + "endpoint": "https://www.gov.me/en/national-security-agency", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "National Security Agency page for low-volume, high-value domestic-security updates.", + "refreshEveryHours": 1 + }, + { + "id": "me-national-security-authority", + "provider": "Montenegro National Security Authority", + "endpoint": "https://www.gov.me/en/dztp", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "National Security Authority page for security architecture and official announcements.", + "refreshEveryHours": 1 + }, + { + "id": "me-customs-administration", + "provider": "Montenegro Customs Administration", + "endpoint": "https://www.gov.me/upravacarina", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Customs page for seizures, smuggling, sanctions and border-enforcement updates.", + "refreshEveryHours": 1 + }, + { + "id": "me-vijesti-black-chronicle", + "provider": "Vijesti - Black Chronicle", + "endpoint": "https://en.vijesti.me/news-b/black-chronicle", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "English black-chronicle section for civilian trigger reporting on crime/security incidents.", + "refreshEveryHours": 1 + }, + { + "id": "me-rtcg-hronika", + "provider": "RTCG - Hronika", + "endpoint": "https://rtcg.me/hronika/", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Montenegro public broadcaster chronicle page for arrest, weapons and public-safety incident reporting.", + "refreshEveryHours": 1 + }, { "id": "curia-press-rss-en", "provider": "Court of Justice of the European Union - RSS (EN/FR)", @@ -1941,6 +2073,94 @@ "requiresKeywordMatch": true, "comment": "Maritime incidents and shipping-security feed for ports and vessel disruption context." }, + { + "id": "above-top-secret-rss", + "provider": "AboveTopSecret Forum", + "endpoint": "https://www.abovetopsecret.com/forum/rss.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Conspiracy-forum chatter feed used only as low-confidence topic-spike context." + }, + { + "id": "godlike-productions-rss", + "provider": "Godlike Productions", + "endpoint": "https://www.godlikeproductions.com/external.php?type=RSS2", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "High-noise conspiracy forum feed retained only as weak early chatter context." + }, + { + "id": "hacker-news-rss", + "provider": "Hacker News", + "endpoint": "https://news.ycombinator.com/rss", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Tech community feed for infrastructure and cyber disruption early signals." + }, + { + "id": "lobsters-rss", + "provider": "Lobsters", + "endpoint": "https://lobste.rs/rss", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Niche engineering/security forum feed for low-volume technical disruption chatter." + }, + { + "id": "zerohedge-feed", + "provider": "ZeroHedge", + "endpoint": "https://feeds.feedburner.com/zerohedge/feed", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Market-panic and geopolitical commentary feed used only as corroborative context." + }, + { + "id": "moon-of-alabama-atom", + "provider": "Moon of Alabama", + "endpoint": "https://www.moonofalabama.org/atom.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Opinionated geopolitical analysis feed tracked as low-confidence narrative context." + }, + { + "id": "volcano-discovery-rss", + "provider": "Volcano Discovery", + "endpoint": "https://www.volcanodiscovery.com/rss.html", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Volcanic activity feed for natural-disruption anomaly context and corroboration." + }, + { + "id": "sans-isc-full", + "provider": "SANS Internet Storm Center (Full Feed)", + "endpoint": "https://isc.sans.edu/rssfeed_full.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Full ISC feed for higher-volume cyber anomaly and defensive intelligence context." + }, { "id": "gctf-news", "provider": "Global Counterterrorism Forum (GCTF) a News", @@ -4777,6 +4997,50 @@ "requiresKeywordMatch": true, "comment": "UK-wide Time Out events feed for planned gatherings and crowd context." }, + { + "id": "guido-fawkes-feed", + "provider": "Guido Fawkes", + "endpoint": "https://order-order.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "UK Westminster gossip and leak-oriented feed for political smoke-signal context." + }, + { + "id": "wings-over-scotland-feed", + "provider": "Wings Over Scotland", + "endpoint": "https://wingsoverscotland.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Scottish political commentary feed used only for low-confidence narrative context." + }, + { + "id": "skwawkbox-feed", + "provider": "Skwawkbox", + "endpoint": "https://skwawkbox.org/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "UK factional political feed used for protest-adjacent and discourse context only." + }, + { + "id": "breitbart-london-feed", + "provider": "Breitbart London", + "endpoint": "https://www.breitbart.com/london/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Partisan UK-focused feed retained as low-confidence framing and chatter context." + }, { "id": "avon-and-somerset-police-news-html", "provider": "Avon and Somerset Police - News", diff --git a/data/sources/eu/context.json b/data/sources/eu/context.json index 333d8d05..bea3cf93 100644 --- a/data/sources/eu/context.json +++ b/data/sources/eu/context.json @@ -333,6 +333,39 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "BDK BKA-focused feed for secondary investigative-policy and capability context." + }, + { + "id": "me-ministry-defence", + "provider": "Montenegro Ministry of Defence", + "endpoint": "https://www.gov.me/en/mod", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Defence ministry page for security posture, NATO and defence-sector context." + }, + { + "id": "me-osce-montenegro-security", + "provider": "OSCE Mission to Montenegro", + "endpoint": "https://montenegro.osce.org/mission-to-montenegro/what-we-do", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "OSCE mission work page covering security-sector reform, small arms and justice context." + }, + { + "id": "me-moneyval-aml-cft", + "provider": "Council of Europe MONEYVAL", + "endpoint": "https://www.coe.int/en/web/moneyval", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "MONEYVAL page for AML/CFT and terrorist-financing compliance context." } ] } diff --git a/data/sources/eu/incidents.json b/data/sources/eu/incidents.json index 8086dc3c..9b8d7ea4 100644 --- a/data/sources/eu/incidents.json +++ b/data/sources/eu/incidents.json @@ -263,6 +263,94 @@ "isTrustedOfficial": true, "requiresKeywordMatch": true, "comment": "Bavarian police press listing for statewide operational and public-safety incidents." + }, + { + "id": "me-police-administration", + "provider": "Montenegro Police Directorate", + "endpoint": "https://www.gov.me/mup/policija", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official Montenegro police page for operations, border/security updates and incident signals." + }, + { + "id": "me-ministry-interior", + "provider": "Montenegro Ministry of the Interior", + "endpoint": "https://www.gov.me/en/mup", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Interior ministry page for internal-security policy and ministry news/press surfaces." + }, + { + "id": "me-govme-all-news", + "provider": "Government of Montenegro - News", + "endpoint": "https://www.gov.me/en/news?at=1&sort=published_at", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Government-wide Montenegro news stream for cross-ministry security announcements." + }, + { + "id": "me-national-security-agency", + "provider": "Montenegro National Security Agency", + "endpoint": "https://www.gov.me/en/national-security-agency", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "National Security Agency page for low-volume, high-value domestic-security updates." + }, + { + "id": "me-national-security-authority", + "provider": "Montenegro National Security Authority", + "endpoint": "https://www.gov.me/en/dztp", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "National Security Authority page for security architecture and official announcements." + }, + { + "id": "me-customs-administration", + "provider": "Montenegro Customs Administration", + "endpoint": "https://www.gov.me/upravacarina", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Customs page for seizures, smuggling, sanctions and border-enforcement updates." + }, + { + "id": "me-vijesti-black-chronicle", + "provider": "Vijesti - Black Chronicle", + "endpoint": "https://en.vijesti.me/news-b/black-chronicle", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "English black-chronicle section for civilian trigger reporting on crime/security incidents." + }, + { + "id": "me-rtcg-hronika", + "provider": "RTCG - Hronika", + "endpoint": "https://rtcg.me/hronika/", + "kind": "html", + "lane": "incidents", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Montenegro public broadcaster chronicle page for arrest, weapons and public-safety incident reporting." } ] } diff --git a/data/sources/international/context.json b/data/sources/international/context.json index b3bb3968..a601cf43 100644 --- a/data/sources/international/context.json +++ b/data/sources/international/context.json @@ -392,6 +392,94 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "Maritime incidents and shipping-security feed for ports and vessel disruption context." + }, + { + "id": "above-top-secret-rss", + "provider": "AboveTopSecret Forum", + "endpoint": "https://www.abovetopsecret.com/forum/rss.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Conspiracy-forum chatter feed used only as low-confidence topic-spike context." + }, + { + "id": "godlike-productions-rss", + "provider": "Godlike Productions", + "endpoint": "https://www.godlikeproductions.com/external.php?type=RSS2", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "High-noise conspiracy forum feed retained only as weak early chatter context." + }, + { + "id": "hacker-news-rss", + "provider": "Hacker News", + "endpoint": "https://news.ycombinator.com/rss", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Tech community feed for infrastructure and cyber disruption early signals." + }, + { + "id": "lobsters-rss", + "provider": "Lobsters", + "endpoint": "https://lobste.rs/rss", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Niche engineering/security forum feed for low-volume technical disruption chatter." + }, + { + "id": "zerohedge-feed", + "provider": "ZeroHedge", + "endpoint": "https://feeds.feedburner.com/zerohedge/feed", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Market-panic and geopolitical commentary feed used only as corroborative context." + }, + { + "id": "moon-of-alabama-atom", + "provider": "Moon of Alabama", + "endpoint": "https://www.moonofalabama.org/atom.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Opinionated geopolitical analysis feed tracked as low-confidence narrative context." + }, + { + "id": "volcano-discovery-rss", + "provider": "Volcano Discovery", + "endpoint": "https://www.volcanodiscovery.com/rss.html", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Volcanic activity feed for natural-disruption anomaly context and corroboration." + }, + { + "id": "sans-isc-full", + "provider": "SANS Internet Storm Center (Full Feed)", + "endpoint": "https://isc.sans.edu/rssfeed_full.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Full ISC feed for higher-volume cyber anomaly and defensive intelligence context." } ] } diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index 3c6265af..1574de10 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -1596,6 +1596,50 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "UK-wide Time Out events feed for planned gatherings and crowd context." + }, + { + "id": "guido-fawkes-feed", + "provider": "Guido Fawkes", + "endpoint": "https://order-order.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "UK Westminster gossip and leak-oriented feed for political smoke-signal context." + }, + { + "id": "wings-over-scotland-feed", + "provider": "Wings Over Scotland", + "endpoint": "https://wingsoverscotland.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Scottish political commentary feed used only for low-confidence narrative context." + }, + { + "id": "skwawkbox-feed", + "provider": "Skwawkbox", + "endpoint": "https://skwawkbox.org/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "UK factional political feed used for protest-adjacent and discourse context only." + }, + { + "id": "breitbart-london-feed", + "provider": "Breitbart London", + "endpoint": "https://www.breitbart.com/london/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Partisan UK-focused feed retained as low-confidence framing and chatter context." } ] } From 5e592c8b456324a5d22f581f321f9e52f286d7df Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:46:44 +0000 Subject: [PATCH 16/25] Plan UK and Slovakia source expansion Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/2763ec1c-1bb8-4bc8-a411-5404054fe40b Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2260992 -> 2260992 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index a224788056bc836dbc7f5bee6fed27810fb74322..b0bb0f58dc4014fd789b19f29635e1f5dec5a0bb 100644 GIT binary patch delta 588 zcmZo@=wfUD;tA4>1rueQ84ETh%=c#$ZwhD&U~CIu+7`h4VX?KDm63s-rHM(Dk%5t! zu7QcJkx7W5nUx7aan_RQ2@0&%lNB1`wjcSzEX-y>Pzw$#w)6jHj%IQsS9?^WXp6S6 zrKS9I{=dxP)5~j>3_X}}SVgKY+pYgG12GE_vjQ<25VHd@2M}`tF&7YX12GQ}^8zs+ z5c31E01yiTu@Ddo1F;AYivqD25Q_t`1Q1ICu@n$X1F;Mc%L1_+5X%Fx!glL_iYE)@ zc)30@@Xz2k<-5RF%*V~Ug4dbn8BZOLH1{^{NUo2Y1sl$Dv7|J%iBIRRQ`4eTF8S^(L%=c#$ZVG4%U~CIu+7`h4Ve$0SwMv}R_tYv$fC(nn zlIaNwtk#ni8sfGe`NAyBhNfVHL40#iy6oDj6~|BMb$z z+HL+Z12GE_vjQ<25VHd@2M}`tF&7YX12GQ}^8zs+5c31E01yiTu@Ddo1F;AYivqD2 z5Q_t`1Q1ICu@n$X1F;Mc%L1_+5X%Fx!giZ~iYE%iIC<(A_-F8&@?GF7=HupF!RyTP SjHhn1U_%Pe_PQFSCT0M1aCT?_ From b1b11456bdad88762807a5e8473f494df07c87ac Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:48:06 +0000 Subject: [PATCH 17/25] Add missing UK political and Slovakia security context sources Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/2763ec1c-1bb8-4bc8-a411-5404054fe40b Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 185 +++++++++++++++++++++++++++++++++++ data/sources/eu/context.json | 121 +++++++++++++++++++++++ data/sources/uk/context.json | 55 +++++++++++ 3 files changed, 361 insertions(+) diff --git a/data/sources.json b/data/sources.json index c06b410d..cf6ba4ca 100644 --- a/data/sources.json +++ b/data/sources.json @@ -427,6 +427,136 @@ "comment": "MONEYVAL page for AML/CFT and terrorist-financing compliance context.", "refreshEveryHours": 1 }, + { + "id": "sk-minv-press", + "provider": "Slovak Ministry of Interior - Press", + "endpoint": "https://www.minv.sk/?tlacove-spravy-2=", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official Slovak interior ministry press listing for police, migration, border and security updates.", + "refreshEveryHours": 1 + }, + { + "id": "sk-sis-news", + "provider": "Slovak Information Service - News", + "endpoint": "https://www.sis.gov.sk/news/news.html", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "SIS intelligence service news page for high-authority Slovak security context.", + "refreshEveryHours": 1 + }, + { + "id": "sk-sis-annual-report", + "provider": "Slovak Information Service - Annual Report", + "endpoint": "https://www.sis.gov.sk/for-you/sis-annual-report.html", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "SIS annual report page for terrorism, extremism, organised-crime and hybrid-threat background context.", + "refreshEveryHours": 1 + }, + { + "id": "sk-general-prosecutor-news", + "provider": "Slovak General Prosecutor - News", + "endpoint": "https://www.genpro.gov.sk/informacie/spravy/", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "General Prosecutor news for Slovak prosecution and cross-border criminal-justice developments.", + "refreshEveryHours": 1 + }, + { + "id": "sk-justice-press", + "provider": "Slovak Ministry of Justice - Press", + "endpoint": "https://www.justice.gov.sk/tlacovespravy/", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Justice ministry press archive for court, criminal-law and terrorism-victim support context.", + "refreshEveryHours": 1 + }, + { + "id": "sk-defence-press", + "provider": "Slovak Ministry of Defence - Press", + "endpoint": "https://www.mosr.sk/tlacove-spravy/", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Defence ministry releases for Slovak military posture, NATO activity and security-sector context.", + "refreshEveryHours": 1 + }, + { + "id": "sk-mfa-all-news", + "provider": "Slovak Foreign Ministry - All News", + "endpoint": "https://www.mzv.sk/en/web/en/what-is-new/all-news", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Foreign ministry all-news page for crisis, sanctions and diplomatic-security updates.", + "refreshEveryHours": 1 + }, + { + "id": "sk-csirt", + "provider": "Government CSIRT Slovakia", + "endpoint": "https://www.csirt.gov.sk/", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Government CSIRT site for Slovak cyber incident and vulnerability-warning context.", + "refreshEveryHours": 1 + }, + { + "id": "sk-iom-press-rss", + "provider": "IOM Slovakia - Press RSS", + "endpoint": "https://iom.sk/en/press-room/press-releases-articles?format=feed&type=rss", + "kind": "rss", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "IOM Slovakia RSS for migration, trafficking, return and integration context updates.", + "refreshEveryHours": 1 + }, + { + "id": "sk-aktuality-krimi-rss", + "provider": "Aktuality.sk - Krimi", + "endpoint": "https://www.aktuality.sk/rss/krimi/", + "kind": "rss", + "lane": "context", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Slovak crime RSS feed used as civilian trigger context for public-safety and organised-crime reporting." + }, + { + "id": "sk-teraz-slovensko-rss", + "provider": "Teraz.sk - Slovensko", + "endpoint": "https://www.teraz.sk/rss/slovensko.rss", + "kind": "rss", + "lane": "context", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Slovensko channel RSS used as broad Slovakia trigger feed under strict keyword gating." + }, { "id": "belgian-federal-police-news", "provider": "Belgian Federal Police - News", @@ -5041,6 +5171,61 @@ "requiresKeywordMatch": true, "comment": "Partisan UK-focused feed retained as low-confidence framing and chatter context." }, + { + "id": "gb-news-uk-politics-rss", + "provider": "GB News - UK Politics", + "endpoint": "https://www.gbnews.com/feeds/politics/uk.rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "UK politics RSS feed for narrative and grievance spike monitoring in Westminster discourse." + }, + { + "id": "the-canary-feed", + "provider": "The Canary", + "endpoint": "https://www.thecanary.co/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Activist-left UK feed retained as low-confidence protest and narrative context." + }, + { + "id": "sky-news-home-rss", + "provider": "Sky News - Home", + "endpoint": "https://feeds.skynews.com/feeds/rss/home.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Sky News home feed for rapid UK and global breaking-incident pickup." + }, + { + "id": "telegraph-all-news-rss", + "provider": "The Telegraph - News", + "endpoint": "https://www.telegraph.co.uk/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Telegraph aggregate RSS used as an editorial-contrast UK trigger source." + }, + { + "id": "my-london-rss", + "provider": "MyLondon", + "endpoint": "https://www.mylondon.news/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "London local-news RSS for borough-level incidents, policing and disruption context." + }, { "id": "avon-and-somerset-police-news-html", "provider": "Avon and Somerset Police - News", diff --git a/data/sources/eu/context.json b/data/sources/eu/context.json index bea3cf93..c717d525 100644 --- a/data/sources/eu/context.json +++ b/data/sources/eu/context.json @@ -366,6 +366,127 @@ "isTrustedOfficial": true, "requiresKeywordMatch": true, "comment": "MONEYVAL page for AML/CFT and terrorist-financing compliance context." + }, + { + "id": "sk-minv-press", + "provider": "Slovak Ministry of Interior - Press", + "endpoint": "https://www.minv.sk/?tlacove-spravy-2=", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official Slovak interior ministry press listing for police, migration, border and security updates." + }, + { + "id": "sk-sis-news", + "provider": "Slovak Information Service - News", + "endpoint": "https://www.sis.gov.sk/news/news.html", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "SIS intelligence service news page for high-authority Slovak security context." + }, + { + "id": "sk-sis-annual-report", + "provider": "Slovak Information Service - Annual Report", + "endpoint": "https://www.sis.gov.sk/for-you/sis-annual-report.html", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "SIS annual report page for terrorism, extremism, organised-crime and hybrid-threat background context." + }, + { + "id": "sk-general-prosecutor-news", + "provider": "Slovak General Prosecutor - News", + "endpoint": "https://www.genpro.gov.sk/informacie/spravy/", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "General Prosecutor news for Slovak prosecution and cross-border criminal-justice developments." + }, + { + "id": "sk-justice-press", + "provider": "Slovak Ministry of Justice - Press", + "endpoint": "https://www.justice.gov.sk/tlacovespravy/", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Justice ministry press archive for court, criminal-law and terrorism-victim support context." + }, + { + "id": "sk-defence-press", + "provider": "Slovak Ministry of Defence - Press", + "endpoint": "https://www.mosr.sk/tlacove-spravy/", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Defence ministry releases for Slovak military posture, NATO activity and security-sector context." + }, + { + "id": "sk-mfa-all-news", + "provider": "Slovak Foreign Ministry - All News", + "endpoint": "https://www.mzv.sk/en/web/en/what-is-new/all-news", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Foreign ministry all-news page for crisis, sanctions and diplomatic-security updates." + }, + { + "id": "sk-csirt", + "provider": "Government CSIRT Slovakia", + "endpoint": "https://www.csirt.gov.sk/", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Government CSIRT site for Slovak cyber incident and vulnerability-warning context." + }, + { + "id": "sk-iom-press-rss", + "provider": "IOM Slovakia - Press RSS", + "endpoint": "https://iom.sk/en/press-room/press-releases-articles?format=feed&type=rss", + "kind": "rss", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "IOM Slovakia RSS for migration, trafficking, return and integration context updates." + }, + { + "id": "sk-aktuality-krimi-rss", + "provider": "Aktuality.sk - Krimi", + "endpoint": "https://www.aktuality.sk/rss/krimi/", + "kind": "rss", + "lane": "context", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Slovak crime RSS feed used as civilian trigger context for public-safety and organised-crime reporting." + }, + { + "id": "sk-teraz-slovensko-rss", + "provider": "Teraz.sk - Slovensko", + "endpoint": "https://www.teraz.sk/rss/slovensko.rss", + "kind": "rss", + "lane": "context", + "region": "eu", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Slovensko channel RSS used as broad Slovakia trigger feed under strict keyword gating." } ] } diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index 1574de10..c30454d4 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -1640,6 +1640,61 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "Partisan UK-focused feed retained as low-confidence framing and chatter context." + }, + { + "id": "gb-news-uk-politics-rss", + "provider": "GB News - UK Politics", + "endpoint": "https://www.gbnews.com/feeds/politics/uk.rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "UK politics RSS feed for narrative and grievance spike monitoring in Westminster discourse." + }, + { + "id": "the-canary-feed", + "provider": "The Canary", + "endpoint": "https://www.thecanary.co/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Activist-left UK feed retained as low-confidence protest and narrative context." + }, + { + "id": "sky-news-home-rss", + "provider": "Sky News - Home", + "endpoint": "https://feeds.skynews.com/feeds/rss/home.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Sky News home feed for rapid UK and global breaking-incident pickup." + }, + { + "id": "telegraph-all-news-rss", + "provider": "The Telegraph - News", + "endpoint": "https://www.telegraph.co.uk/rss.xml", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Telegraph aggregate RSS used as an editorial-contrast UK trigger source." + }, + { + "id": "my-london-rss", + "provider": "MyLondon", + "endpoint": "https://www.mylondon.news/?service=rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "London local-news RSS for borough-level incidents, policing and disruption context." } ] } From 0fb378af815402e80cac97fe52374e713a203967 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:53:31 +0000 Subject: [PATCH 18/25] Plan Ecuador and UK source expansion Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/eb6f7b92-625a-4530-874b-ced5e26e6717 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2260992 -> 2260992 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index b0bb0f58dc4014fd789b19f29635e1f5dec5a0bb..df38ab3d411ba182eae3dc7a4717d6da1b05d0dc 100644 GIT binary patch delta 601 zcmZo@=wfUD;tA4>g%f3*84EWi%=c%MZVG4%U~CIu+7`h4ezA?Iv6Z2@o|&a-l#zjv znXZ9}u8~QIp_vt7an_RQ2@0&%lNB1`wjcSzEW~C>SPu?6w)6jHj$(2mTYpreXp6S6 zrKS9I{=dxP)5~j>3_X}}*hQ*8+pYgG12GE_vjQ<25VHd@2M}`tF&7YX12GQ}^8zs+ z5c31E01yiTu@Ddo1F;AYivqD25Q_t`1Q1ICu@n$X1F;Mc%L1_+5X%Fx!glL_iYE(I z1vyg~_-F8&@?GF7=HupF!RyTPjHixAntK~}B-cl-J}ynpGn~@{7qAL%R%p=RWJzgk zlb+6BrzFRP2+iqof0=DqA{*PJrY{IklH-KSOc$(GGG&yU{ufnrV~~<9qr`Oi8Wgn& O^-9*;zf>vlumS+=JFy%9 delta 309 zcmZo@=wfUD;tA4>1rueQ84ETh%=c#$ZwhD&U~CIu+7`h4e(`kM8YQmj`ZY=tV1kLY zWO{-EtMz1shPdrVzAy{1p()rd@S8c32~CirQM5%{*wRvdI{#m0@#*EYN`{Qg2t&cF zcAJ09K+FQftU$~L#Oy%K0mPg@%mu{UK+FTgyg Date: Fri, 24 Apr 2026 16:55:37 +0000 Subject: [PATCH 19/25] Add Ecuador security and UK institutional source coverage Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/eb6f7b92-625a-4530-874b-ced5e26e6717 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 432 ++++++++++++++++++++++++ data/sources/international/context.json | 231 +++++++++++++ data/sources/uk/context.json | 99 ++++++ data/sources/uk/incidents.json | 77 +++++ 4 files changed, 839 insertions(+) diff --git a/data/sources.json b/data/sources.json index cf6ba4ca..9184f135 100644 --- a/data/sources.json +++ b/data/sources.json @@ -2291,6 +2291,249 @@ "requiresKeywordMatch": true, "comment": "Full ISC feed for higher-volume cyber anomaly and defensive intelligence context." }, + { + "id": "ec-police-news", + "provider": "Policía Nacional del Ecuador - Noticias", + "endpoint": "https://noticias.policia.gob.ec/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official Ecuador police news stream for operational incidents including drugs, firearms, extortion and organised-crime actions.", + "refreshEveryHours": 1 + }, + { + "id": "ec-police-organised-crime", + "provider": "Policía Nacional del Ecuador - Lucha contra el crimen organizado", + "endpoint": "https://noticias.policia.gob.ec/categor%C3%ADas/lucha-contra-el-crimen-organizado/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Focused Ecuador police category page for organised-crime operations, seizures and group-linked actions.", + "refreshEveryHours": 1 + }, + { + "id": "ec-fiscalia-news", + "provider": "Fiscalía General del Estado - Noticias", + "endpoint": "https://www.fiscalia.gob.ec/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Ecuador prosecutor portal for confirmed case and prosecution updates tied to organised crime and security offenses.", + "refreshEveryHours": 1 + }, + { + "id": "ec-ministry-interior-open-data", + "provider": "Ecuador Open Data - Ministerio del Interior", + "endpoint": "https://datosabiertos.presidencia.gob.ec/dataset/?organization=ministerio-del-interior", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Ministry of Interior open-data listing for homicide and public-security datasets used for quantitative context.", + "refreshEveryHours": 1 + }, + { + "id": "ec-uafe-aml-cft", + "provider": "UAFE Ecuador", + "endpoint": "https://www.uafe.gob.ec/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Ecuador FIU portal for AML/CFT, illicit-finance and risk-assessment context related to organised-crime financing.", + "refreshEveryHours": 1 + }, + { + "id": "ec-aduana-senae", + "provider": "Aduana del Ecuador (SENAE)", + "endpoint": "https://www.aduana.gob.ec/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Customs authority portal for border, port, contraband and interdiction context relevant to weapons and narcotics flows.", + "refreshEveryHours": 1 + }, + { + "id": "ec-ecu911-news", + "provider": "ECU 911", + "endpoint": "https://www.ecu911.gob.ec/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "National emergency-coordination service updates for large response events and public-safety coordination context.", + "refreshEveryHours": 1 + }, + { + "id": "ec-cancilleria-security", + "provider": "Cancillería del Ecuador", + "endpoint": "https://www.cancilleria.gob.ec/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Foreign ministry news for diplomatic-security, international cooperation and transnational-crime framing context.", + "refreshEveryHours": 1 + }, + { + "id": "ec-primicias-seguridad", + "provider": "Primicias - Seguridad", + "endpoint": "https://www.primicias.ec/seguridad", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Ecuador security-news vertical for rapid local coverage of gangs, prisons and organised-crime incidents." + }, + { + "id": "ec-planv-crimen-organizado", + "provider": "Plan V - Crimen Organizado", + "endpoint": "https://planv.com.ec/historias/crimen-organizado/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Investigative Ecuador organised-crime coverage for contextual enrichment around criminal governance and violence patterns." + }, + { + "id": "ec-eluniverso-rss", + "provider": "El Universo - RSS", + "endpoint": "https://www.eluniverso.com/rss/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "El Universo RSS index for broad Ecuador media trigger coverage under strict keyword filtering." + }, + { + "id": "ec-ap-latin-america", + "provider": "Associated Press - Latin America", + "endpoint": "https://apnews.com/hub/latin-america", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "AP Latin America hub for regional incident corroboration and cross-border context affecting Ecuador." + }, + { + "id": "ec-aljazeera-ecuador-gangs", + "provider": "Al Jazeera - Ecuador gangs analysis", + "endpoint": "https://www.aljazeera.com/news/2024/2/14/no-clear-way-out-how-ecuador-descended-into-gang-violence", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Reference explainer on Ecuador gang violence used for narrative and background context enrichment." + }, + { + "id": "ec-guardian-ecuador", + "provider": "The Guardian - Ecuador", + "endpoint": "https://www.theguardian.com/world/ecuador", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Guardian Ecuador topic page for international media corroboration and ongoing country security context." + }, + { + "id": "ec-cfr-ecuador-narco-state", + "provider": "Council on Foreign Relations - Ecuador", + "endpoint": "https://www.cfr.org/articles/can-ecuador-avoid-becoming-narco-state", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "CFR analysis page providing strategic context on Ecuador narco-state risk narratives." + }, + { + "id": "ec-wola-ecuador-bukele-model", + "provider": "WOLA - Ecuador security analysis", + "endpoint": "https://www.wola.org/analysis/why-ecuador-should-not-replicate-the-bukele-model/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Policy analysis on Ecuador security model choices used as non-operational context." + }, + { + "id": "ec-fcdo-ecuador-safety-security", + "provider": "UK FCDO - Ecuador travel advice", + "endpoint": "https://www.gov.uk/foreign-travel-advice/ecuador/safety-and-security", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official UK travel safety guidance for Ecuador used as government security-posture context.", + "refreshEveryHours": 1 + }, + { + "id": "ec-nctc-los-lobos", + "provider": "US NCTC - Los Lobos", + "endpoint": "https://www.dni.gov/nctc/terrorist_groups/los_lobos.html", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "US intelligence profile page for Los Lobos used for actor-level context and designation framing.", + "refreshEveryHours": 1 + }, + { + "id": "ec-us-treasury-los-lobos", + "provider": "US Treasury - Los Lobos sanctions", + "endpoint": "https://home.treasury.gov/news/press-releases/jy2394", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "US Treasury sanctions press release for Los Lobos financial and designation context.", + "refreshEveryHours": 1 + }, + { + "id": "ec-us-treasury-los-choneros", + "provider": "US Treasury - Los Choneros sanctions", + "endpoint": "https://home.treasury.gov/news/press-releases/jy2082", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "US Treasury sanctions press release for Los Choneros used for organised-crime finance context.", + "refreshEveryHours": 1 + }, + { + "id": "ec-csis-ecuador-crises", + "provider": "CSIS - Ecuador compounding crises", + "endpoint": "https://www.csis.org/analysis/eye-storm-ecuadors-compounding-crises", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "CSIS strategic analysis page used for macro security context on Ecuador risk evolution." + }, { "id": "gctf-news", "provider": "Global Counterterrorism Forum (GCTF) a News", @@ -5226,6 +5469,111 @@ "requiresKeywordMatch": true, "comment": "London local-news RSS for borough-level incidents, policing and disruption context." }, + { + "id": "uk-data-police-api", + "provider": "Police.uk - API root", + "endpoint": "https://data.police.uk/", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Police.uk data API documentation root for UK policing dataset and endpoint context.", + "refreshEveryHours": 1 + }, + { + "id": "uk-judiciary-sentencing-remarks", + "provider": "Judiciary UK - Sentencing remarks", + "endpoint": "https://www.judiciary.uk/judgment-types/sentencing-remarks/", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official UK judiciary sentencing-remarks archive for court outcome and legal context signals.", + "refreshEveryHours": 1 + }, + { + "id": "uk-college-policing-news", + "provider": "College of Policing - News and views", + "endpoint": "https://www.college.police.uk/news-views", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "College of Policing policy and guidance updates relevant to UK policing practice and standards context.", + "refreshEveryHours": 1 + }, + { + "id": "uk-ons-crime-england-wales", + "provider": "ONS - Crime in England and Wales", + "endpoint": "https://www.ons.gov.uk/peoplepopulationandcommunity/crimeandjustice/bulletins/crimeinenglandandwales/latest", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official ONS latest crime bulletin page for statistical trend context across England and Wales.", + "refreshEveryHours": 1 + }, + { + "id": "uk-serious-fraud-office-news", + "provider": "Serious Fraud Office - GOV.UK organisation", + "endpoint": "https://www.gov.uk/government/organisations/serious-fraud-office", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "SFO organisation page for major fraud, bribery and economic-crime enforcement updates.", + "refreshEveryHours": 1 + }, + { + "id": "uk-hmrc-news", + "provider": "HM Revenue & Customs - News and communications", + "endpoint": "https://www.gov.uk/search/news-and-communications?organisations[]=hm-revenue-customs", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "HMRC news search filter for tax, customs and financial-crime enforcement communication context.", + "refreshEveryHours": 1 + }, + { + "id": "uk-ukfinance-fraud-news", + "provider": "UK Finance - News and insight", + "endpoint": "https://www.ukfinance.org.uk/news-and-insight", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Industry perspective on UK fraud trends and payment/economic-crime narratives." + }, + { + "id": "uk-cifas-newsroom", + "provider": "Cifas - Newsroom", + "endpoint": "https://www.cifas.org.uk/newsroom", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Fraud-prevention organisation newsroom for UK fraud threat and prevention narrative context." + }, + { + "id": "politics-co-uk-rss", + "provider": "Politics.co.uk", + "endpoint": "https://www.politics.co.uk/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "UK politics RSS stream for policy and institutional narrative context." + }, { "id": "avon-and-somerset-police-news-html", "provider": "Avon and Somerset Police - News", @@ -6042,6 +6390,90 @@ "comment": "Wiltshire Police news for South-West incident corroboration and military-adjacent security context.", "refreshEveryHours": 1 }, + { + "id": "uk-npcc-news", + "provider": "National Police Chiefs' Council - News", + "endpoint": "https://news.npcc.police.uk/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "NPCC news portal root for national policing operational announcements and campaigns.", + "refreshEveryHours": 1 + }, + { + "id": "uk-npcc-county-lines", + "provider": "National Police Chiefs' Council - Crime Operations releases", + "endpoint": "https://news.npcc.police.uk/releases/t/crime-operations", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "NPCC crime-operations release filter for county-lines and organised-crime policing updates.", + "refreshEveryHours": 1 + }, + { + "id": "uk-btp-england-news", + "provider": "British Transport Police - England news", + "endpoint": "https://www.btp.police.uk/news/btp/news/?newsCategory=England", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "BTP England-filtered newsroom page for rail-network incidents and transport security operations.", + "refreshEveryHours": 1 + }, + { + "id": "uk-city-london-police-news", + "provider": "City of London Police - News", + "endpoint": "https://www.cityoflondon.police.uk/news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "City of London Police news root for central-London policing incidents and force statements.", + "refreshEveryHours": 1 + }, + { + "id": "uk-city-london-police-fraud", + "provider": "City of London Police - Fraud category", + "endpoint": "https://www.cityoflondon.police.uk/news/city-of-london/news/?newsCategory=Fraud", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "City of London Police fraud category page for economic crime and fraud investigation updates.", + "refreshEveryHours": 1 + }, + { + "id": "uk-west-mercia-police-news", + "provider": "West Mercia Police - News", + "endpoint": "https://www.westmercia.police.uk/news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "West Mercia Police newsroom root for county incidents, arrests and operational notices.", + "refreshEveryHours": 1 + }, + { + "id": "uk-british-transport-police-search", + "provider": "British Transport Police - News search", + "endpoint": "https://www.btp.police.uk/news/news-search/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "BTP searchable news listing for incident retrieval across rail and station policing topics.", + "refreshEveryHours": 1 + }, { "id": "attorney-generals-office-html", "provider": "Attorney General's Office", diff --git a/data/sources/international/context.json b/data/sources/international/context.json index a601cf43..f7bb9bb2 100644 --- a/data/sources/international/context.json +++ b/data/sources/international/context.json @@ -480,6 +480,237 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "Full ISC feed for higher-volume cyber anomaly and defensive intelligence context." + }, + { + "id": "ec-police-news", + "provider": "Policía Nacional del Ecuador - Noticias", + "endpoint": "https://noticias.policia.gob.ec/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official Ecuador police news stream for operational incidents including drugs, firearms, extortion and organised-crime actions." + }, + { + "id": "ec-police-organised-crime", + "provider": "Policía Nacional del Ecuador - Lucha contra el crimen organizado", + "endpoint": "https://noticias.policia.gob.ec/categor%C3%ADas/lucha-contra-el-crimen-organizado/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Focused Ecuador police category page for organised-crime operations, seizures and group-linked actions." + }, + { + "id": "ec-fiscalia-news", + "provider": "Fiscalía General del Estado - Noticias", + "endpoint": "https://www.fiscalia.gob.ec/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Ecuador prosecutor portal for confirmed case and prosecution updates tied to organised crime and security offenses." + }, + { + "id": "ec-ministry-interior-open-data", + "provider": "Ecuador Open Data - Ministerio del Interior", + "endpoint": "https://datosabiertos.presidencia.gob.ec/dataset/?organization=ministerio-del-interior", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Ministry of Interior open-data listing for homicide and public-security datasets used for quantitative context." + }, + { + "id": "ec-uafe-aml-cft", + "provider": "UAFE Ecuador", + "endpoint": "https://www.uafe.gob.ec/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Ecuador FIU portal for AML/CFT, illicit-finance and risk-assessment context related to organised-crime financing." + }, + { + "id": "ec-aduana-senae", + "provider": "Aduana del Ecuador (SENAE)", + "endpoint": "https://www.aduana.gob.ec/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Customs authority portal for border, port, contraband and interdiction context relevant to weapons and narcotics flows." + }, + { + "id": "ec-ecu911-news", + "provider": "ECU 911", + "endpoint": "https://www.ecu911.gob.ec/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "National emergency-coordination service updates for large response events and public-safety coordination context." + }, + { + "id": "ec-cancilleria-security", + "provider": "Cancillería del Ecuador", + "endpoint": "https://www.cancilleria.gob.ec/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Foreign ministry news for diplomatic-security, international cooperation and transnational-crime framing context." + }, + { + "id": "ec-primicias-seguridad", + "provider": "Primicias - Seguridad", + "endpoint": "https://www.primicias.ec/seguridad", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Ecuador security-news vertical for rapid local coverage of gangs, prisons and organised-crime incidents." + }, + { + "id": "ec-planv-crimen-organizado", + "provider": "Plan V - Crimen Organizado", + "endpoint": "https://planv.com.ec/historias/crimen-organizado/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Investigative Ecuador organised-crime coverage for contextual enrichment around criminal governance and violence patterns." + }, + { + "id": "ec-eluniverso-rss", + "provider": "El Universo - RSS", + "endpoint": "https://www.eluniverso.com/rss/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "El Universo RSS index for broad Ecuador media trigger coverage under strict keyword filtering." + }, + { + "id": "ec-ap-latin-america", + "provider": "Associated Press - Latin America", + "endpoint": "https://apnews.com/hub/latin-america", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "AP Latin America hub for regional incident corroboration and cross-border context affecting Ecuador." + }, + { + "id": "ec-aljazeera-ecuador-gangs", + "provider": "Al Jazeera - Ecuador gangs analysis", + "endpoint": "https://www.aljazeera.com/news/2024/2/14/no-clear-way-out-how-ecuador-descended-into-gang-violence", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Reference explainer on Ecuador gang violence used for narrative and background context enrichment." + }, + { + "id": "ec-guardian-ecuador", + "provider": "The Guardian - Ecuador", + "endpoint": "https://www.theguardian.com/world/ecuador", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Guardian Ecuador topic page for international media corroboration and ongoing country security context." + }, + { + "id": "ec-cfr-ecuador-narco-state", + "provider": "Council on Foreign Relations - Ecuador", + "endpoint": "https://www.cfr.org/articles/can-ecuador-avoid-becoming-narco-state", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "CFR analysis page providing strategic context on Ecuador narco-state risk narratives." + }, + { + "id": "ec-wola-ecuador-bukele-model", + "provider": "WOLA - Ecuador security analysis", + "endpoint": "https://www.wola.org/analysis/why-ecuador-should-not-replicate-the-bukele-model/", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Policy analysis on Ecuador security model choices used as non-operational context." + }, + { + "id": "ec-fcdo-ecuador-safety-security", + "provider": "UK FCDO - Ecuador travel advice", + "endpoint": "https://www.gov.uk/foreign-travel-advice/ecuador/safety-and-security", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official UK travel safety guidance for Ecuador used as government security-posture context." + }, + { + "id": "ec-nctc-los-lobos", + "provider": "US NCTC - Los Lobos", + "endpoint": "https://www.dni.gov/nctc/terrorist_groups/los_lobos.html", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "US intelligence profile page for Los Lobos used for actor-level context and designation framing." + }, + { + "id": "ec-us-treasury-los-lobos", + "provider": "US Treasury - Los Lobos sanctions", + "endpoint": "https://home.treasury.gov/news/press-releases/jy2394", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "US Treasury sanctions press release for Los Lobos financial and designation context." + }, + { + "id": "ec-us-treasury-los-choneros", + "provider": "US Treasury - Los Choneros sanctions", + "endpoint": "https://home.treasury.gov/news/press-releases/jy2082", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "US Treasury sanctions press release for Los Choneros used for organised-crime finance context." + }, + { + "id": "ec-csis-ecuador-crises", + "provider": "CSIS - Ecuador compounding crises", + "endpoint": "https://www.csis.org/analysis/eye-storm-ecuadors-compounding-crises", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "CSIS strategic analysis page used for macro security context on Ecuador risk evolution." } ] } diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index c30454d4..d566b550 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -1695,6 +1695,105 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "London local-news RSS for borough-level incidents, policing and disruption context." + }, + { + "id": "uk-data-police-api", + "provider": "Police.uk - API root", + "endpoint": "https://data.police.uk/", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Police.uk data API documentation root for UK policing dataset and endpoint context." + }, + { + "id": "uk-judiciary-sentencing-remarks", + "provider": "Judiciary UK - Sentencing remarks", + "endpoint": "https://www.judiciary.uk/judgment-types/sentencing-remarks/", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official UK judiciary sentencing-remarks archive for court outcome and legal context signals." + }, + { + "id": "uk-college-policing-news", + "provider": "College of Policing - News and views", + "endpoint": "https://www.college.police.uk/news-views", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "College of Policing policy and guidance updates relevant to UK policing practice and standards context." + }, + { + "id": "uk-ons-crime-england-wales", + "provider": "ONS - Crime in England and Wales", + "endpoint": "https://www.ons.gov.uk/peoplepopulationandcommunity/crimeandjustice/bulletins/crimeinenglandandwales/latest", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official ONS latest crime bulletin page for statistical trend context across England and Wales." + }, + { + "id": "uk-serious-fraud-office-news", + "provider": "Serious Fraud Office - GOV.UK organisation", + "endpoint": "https://www.gov.uk/government/organisations/serious-fraud-office", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "SFO organisation page for major fraud, bribery and economic-crime enforcement updates." + }, + { + "id": "uk-hmrc-news", + "provider": "HM Revenue & Customs - News and communications", + "endpoint": "https://www.gov.uk/search/news-and-communications?organisations[]=hm-revenue-customs", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "HMRC news search filter for tax, customs and financial-crime enforcement communication context." + }, + { + "id": "uk-ukfinance-fraud-news", + "provider": "UK Finance - News and insight", + "endpoint": "https://www.ukfinance.org.uk/news-and-insight", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Industry perspective on UK fraud trends and payment/economic-crime narratives." + }, + { + "id": "uk-cifas-newsroom", + "provider": "Cifas - Newsroom", + "endpoint": "https://www.cifas.org.uk/newsroom", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Fraud-prevention organisation newsroom for UK fraud threat and prevention narrative context." + }, + { + "id": "politics-co-uk-rss", + "provider": "Politics.co.uk", + "endpoint": "https://www.politics.co.uk/rss/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "UK politics RSS stream for policy and institutional narrative context." } ] } diff --git a/data/sources/uk/incidents.json b/data/sources/uk/incidents.json index b5f60a39..4c85082e 100644 --- a/data/sources/uk/incidents.json +++ b/data/sources/uk/incidents.json @@ -747,6 +747,83 @@ "isTrustedOfficial": true, "requiresKeywordMatch": true, "comment": "Wiltshire Police news for South-West incident corroboration and military-adjacent security context." + }, + { + "id": "uk-npcc-news", + "provider": "National Police Chiefs' Council - News", + "endpoint": "https://news.npcc.police.uk/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "NPCC news portal root for national policing operational announcements and campaigns." + }, + { + "id": "uk-npcc-county-lines", + "provider": "National Police Chiefs' Council - Crime Operations releases", + "endpoint": "https://news.npcc.police.uk/releases/t/crime-operations", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "NPCC crime-operations release filter for county-lines and organised-crime policing updates." + }, + { + "id": "uk-btp-england-news", + "provider": "British Transport Police - England news", + "endpoint": "https://www.btp.police.uk/news/btp/news/?newsCategory=England", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "BTP England-filtered newsroom page for rail-network incidents and transport security operations." + }, + { + "id": "uk-city-london-police-news", + "provider": "City of London Police - News", + "endpoint": "https://www.cityoflondon.police.uk/news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "City of London Police news root for central-London policing incidents and force statements." + }, + { + "id": "uk-city-london-police-fraud", + "provider": "City of London Police - Fraud category", + "endpoint": "https://www.cityoflondon.police.uk/news/city-of-london/news/?newsCategory=Fraud", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "City of London Police fraud category page for economic crime and fraud investigation updates." + }, + { + "id": "uk-west-mercia-police-news", + "provider": "West Mercia Police - News", + "endpoint": "https://www.westmercia.police.uk/news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "West Mercia Police newsroom root for county incidents, arrests and operational notices." + }, + { + "id": "uk-british-transport-police-search", + "provider": "British Transport Police - News search", + "endpoint": "https://www.btp.police.uk/news/news-search/", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "BTP searchable news listing for incident retrieval across rail and station policing topics." } ] } From ab4a9c55d07ec2b15ecf23ca7698dba3c2aee6ea Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 16:59:35 +0000 Subject: [PATCH 20/25] Plan specialized feed source additions Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/745ab5f6-1f03-4d4f-84fb-30e2027a42c3 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2260992 -> 2260992 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index df38ab3d411ba182eae3dc7a4717d6da1b05d0dc..64f1c10811a5cbcfd83d08b62f618993a51a91e7 100644 GIT binary patch delta 663 zcmb8tO)mpM7zgm3&UQPibk(Y&ZwzrjrClm&Z5&*Bvk`G{B2=7&l6Yq;O(jmmVH_kR zd;lU*XK``yWw;6PCm}AIFv)KYPiCI~WM&-afH-g%A%&yp2q|1oosE*%o?W&{+4kJp zl$^JDSEK;VNo-Ro`JVjuYKQ#bz0;JykiWKSP4?GZ(A-VXX{X`haH(52&DIcM7?veT zmei$M;&7c05s$dCdE?hKVWf=yWU4P|^o^(c2Q%40W1uHxWG4&xxk7$q_sw?-GI&7&A23j%3j9zFH4p#|Y9R=9phG=` zpaH_r2u;uo5r{$z;*fxriuvC9xI}e!DtwE)O;!mz#ZOpZ@^rBr6UhypVBdEquE)4V gq9U=yY01l8DfDcwAg<@Vd&$I-gfQ073P@9RL6T delta 390 zcmZ9^&q@MO7zOaT-ubIJ{+TRm%*HE4MYM@lj;kJ^p$7;TE?OqFXcFR1h(Rl(#n&#u z7bt|Lb+~BNGxP>QxGIuPE5QT5Z*llIQr<8LJ(sm^OZ%+#)Oa{x?p4qYST{&K2b}e* z>ZW3IQp~pAG2T!J7d0<;G8}} zQJkKHc18_PtKE6>C?1Wuqtj<7tm#9X{o!A%WGYBh>})%=TBX2Dq+b8;6su0XQ21+K^`2KhXO3XA{1c>mcfM*tUwu7!HfM# n<*mhYR+EeqQKiGamLGa@!%~}3*QLy*DAVJG$jA4gIM)9Fn0AY< From ceff2e36ec4ee20b1898944a254e0df4181352d7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:00:17 +0000 Subject: [PATCH 21/25] Add specialized international and UK context source entries Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/745ab5f6-1f03-4d4f-84fb-30e2027a42c3 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources/international/context.json | 77 +++++++++++++++++++++++++ data/sources/uk/context.json | 33 +++++++++++ data/sources/uk/oversight.json | 11 ++++ 3 files changed, 121 insertions(+) diff --git a/data/sources/international/context.json b/data/sources/international/context.json index f7bb9bb2..a5086b76 100644 --- a/data/sources/international/context.json +++ b/data/sources/international/context.json @@ -711,6 +711,83 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "CSIS strategic analysis page used for macro security context on Ecuador risk evolution." + }, + { + "id": "jamestown-foundation-feed", + "provider": "Jamestown Foundation - Main Feed", + "endpoint": "https://jamestown.org/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Jamestown Foundation primary feed for geopolitical, conflict and security analysis beyond terrorism-only coverage." + }, + { + "id": "kyle-orton-blog-feed", + "provider": "Kyle Orton's Blog", + "endpoint": "https://kyleorton.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Specialist long-form analysis feed covering extremism, insurgency and geopolitical-security history context." + }, + { + "id": "caert-feed", + "provider": "African Centre for the Study and Research on Terrorism (ACSRT/CAERT)", + "endpoint": "https://caert.org.dz/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "African Union ACSRT feed for regional counter-terrorism documentation, initiatives and institutional updates." + }, + { + "id": "security-magazine-rss", + "provider": "Security Magazine", + "endpoint": "https://www.securitymagazine.com/rss/15", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Operational security and cyber-physical risk feed relevant to public-safety, protection and infrastructure threat context." + }, + { + "id": "leiden-security-global-affairs-feed", + "provider": "Leiden Security and Global Affairs Blog", + "endpoint": "https://www.leidensecurityandglobalaffairs.nl/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Academic security-analysis feed for strategic foresight, state violence and conflict-theory context." + }, + { + "id": "borealis-threat-risk-feed", + "provider": "Borealis Threat and Risk Consulting", + "endpoint": "https://borealisthreatandrisk.com/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Threat-intelligence commentary feed with counter-terrorism and intelligence-policy practitioner perspectives." + }, + { + "id": "insight-crime-feed", + "provider": "InSight Crime", + "endpoint": "https://insightcrime.org/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Investigative organized-crime reporting feed focused on Latin America criminal ecosystems and violence dynamics." } ] } diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index d566b550..3b8da0e8 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -1794,6 +1794,39 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "UK politics RSS stream for policy and institutional narrative context." + }, + { + "id": "uk-met-office-rss-guides", + "provider": "Met Office - RSS feeds guide", + "endpoint": "https://weather.metoffice.gov.uk/guides/rss", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Met Office RSS guide for weather alert surfaces used as situational context impacting incidents and responder operations." + }, + { + "id": "novara-media-feed", + "provider": "Novara Media", + "endpoint": "https://novaramedia.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "UK political-analysis feed retained as low-confidence protest and unrest narrative context." + }, + { + "id": "byline-times-feed", + "provider": "Byline Times", + "endpoint": "https://bylinetimes.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Investigative UK commentary feed used as narrative and corruption-related context under keyword gating." } ] } diff --git a/data/sources/uk/oversight.json b/data/sources/uk/oversight.json index 8941aa50..a23879b6 100644 --- a/data/sources/uk/oversight.json +++ b/data/sources/uk/oversight.json @@ -667,6 +667,17 @@ "isTrustedOfficial": true, "requiresKeywordMatch": true, "comment": "House of Commons Justice Select Committee news on courts, prisons and extremist offender management." + }, + { + "id": "uk-parliament-rss-feeds-index", + "provider": "UK Parliament - RSS Feeds", + "endpoint": "https://www.parliament.uk/site-information/rss-feeds/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official UK Parliament RSS index page for legislative and committee feed discovery and institutional movement signals." } ] } From 22a3e5c60a1bcd90c5b13bdb7c927aac13927d07 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:00:56 +0000 Subject: [PATCH 22/25] Compile catalog after specialized feed additions Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/745ab5f6-1f03-4d4f-84fb-30e2027a42c3 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 124 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) diff --git a/data/sources.json b/data/sources.json index 9184f135..a5ef3840 100644 --- a/data/sources.json +++ b/data/sources.json @@ -2534,6 +2534,84 @@ "requiresKeywordMatch": true, "comment": "CSIS strategic analysis page used for macro security context on Ecuador risk evolution." }, + { + "id": "jamestown-foundation-feed", + "provider": "Jamestown Foundation - Main Feed", + "endpoint": "https://jamestown.org/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Jamestown Foundation primary feed for geopolitical, conflict and security analysis beyond terrorism-only coverage." + }, + { + "id": "kyle-orton-blog-feed", + "provider": "Kyle Orton's Blog", + "endpoint": "https://kyleorton.co.uk/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Specialist long-form analysis feed covering extremism, insurgency and geopolitical-security history context." + }, + { + "id": "caert-feed", + "provider": "African Centre for the Study and Research on Terrorism (ACSRT/CAERT)", + "endpoint": "https://caert.org.dz/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "African Union ACSRT feed for regional counter-terrorism documentation, initiatives and institutional updates.", + "refreshEveryHours": 1 + }, + { + "id": "security-magazine-rss", + "provider": "Security Magazine", + "endpoint": "https://www.securitymagazine.com/rss/15", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Operational security and cyber-physical risk feed relevant to public-safety, protection and infrastructure threat context." + }, + { + "id": "leiden-security-global-affairs-feed", + "provider": "Leiden Security and Global Affairs Blog", + "endpoint": "https://www.leidensecurityandglobalaffairs.nl/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Academic security-analysis feed for strategic foresight, state violence and conflict-theory context." + }, + { + "id": "borealis-threat-risk-feed", + "provider": "Borealis Threat and Risk Consulting", + "endpoint": "https://borealisthreatandrisk.com/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Threat-intelligence commentary feed with counter-terrorism and intelligence-policy practitioner perspectives." + }, + { + "id": "insight-crime-feed", + "provider": "InSight Crime", + "endpoint": "https://insightcrime.org/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Investigative organized-crime reporting feed focused on Latin America criminal ecosystems and violence dynamics." + }, { "id": "gctf-news", "provider": "Global Counterterrorism Forum (GCTF) a News", @@ -5574,6 +5652,40 @@ "requiresKeywordMatch": true, "comment": "UK politics RSS stream for policy and institutional narrative context." }, + { + "id": "uk-met-office-rss-guides", + "provider": "Met Office - RSS feeds guide", + "endpoint": "https://weather.metoffice.gov.uk/guides/rss", + "kind": "html", + "lane": "context", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Met Office RSS guide for weather alert surfaces used as situational context impacting incidents and responder operations.", + "refreshEveryHours": 1 + }, + { + "id": "novara-media-feed", + "provider": "Novara Media", + "endpoint": "https://novaramedia.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "UK political-analysis feed retained as low-confidence protest and unrest narrative context." + }, + { + "id": "byline-times-feed", + "provider": "Byline Times", + "endpoint": "https://bylinetimes.com/feed/", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Investigative UK commentary feed used as narrative and corruption-related context under keyword gating." + }, { "id": "avon-and-somerset-police-news-html", "provider": "Avon and Somerset Police - News", @@ -7201,6 +7313,18 @@ "comment": "House of Commons Justice Select Committee news on courts, prisons and extremist offender management.", "refreshEveryHours": 1 }, + { + "id": "uk-parliament-rss-feeds-index", + "provider": "UK Parliament - RSS Feeds", + "endpoint": "https://www.parliament.uk/site-information/rss-feeds/", + "kind": "html", + "lane": "oversight", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official UK Parliament RSS index page for legislative and committee feed discovery and institutional movement signals.", + "refreshEveryHours": 1 + }, { "id": "act-campaign", "provider": "ACT Awareness Campaign", From 207c94055e5a50726f2ba094c13da1bd02cd3503 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:04:34 +0000 Subject: [PATCH 23/25] Plan additional CT source expansion batch Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/5c1ddfa5-618b-438a-b7cb-be6e1863d911 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/albertalert.sqlite | Bin 2260992 -> 2260992 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/albertalert.sqlite b/data/albertalert.sqlite index 64f1c10811a5cbcfd83d08b62f618993a51a91e7..f0d092a45f14ada44292fa5f9070491db930cf05 100644 GIT binary patch delta 433 zcmZo@=wfUD;tA4>#S>+m8H+b2%=c%MZwhD&U~CIu+7`fkV==e6m4S(sp{1UYk?Hg~ zUzlZ31h~F1x1$K4tJr?{3$q}bHIgAwMg~S^x&|h?MkXPKM2K(a|IPf7i4qgqt^Y9t zF$)m00x=s9vjZ^)5OV@C7Z7s;F%J;)0x=&D^8>K}5DNma5D*Iku?P^00@q~IMi|unNlv3CM52A{Z delta 259 zcmZ9=tqy`v0LAfLt^x`wh#x56$1T1D%?FT2FqoZ^h|GYSNz*MjgD;?SlVUXZ2tI~^ z=EgjZM);kb{ljoaLfBixKiE^^U+1S8aW-D$k;oJ79(|wrBVZ~&rqs%xlG3Qql4nXa zF^`vknfyPA_N5=85Vvkdp#)_RK>`^nPz424s6ibXpn(oeFrWo(=s*`t=s_PWu)%== b3}KYG+4!}lh8%Ng#U?jBT*^rtu!Zyk=R|CG From 97d0820d952622f07374b0a9756bb8eeda454898 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:06:09 +0000 Subject: [PATCH 24/25] Add additional specialized and operational CT source entries Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/5c1ddfa5-618b-438a-b7cb-be6e1863d911 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources/eu/context.json | 44 +++++++++ data/sources/international/context.json | 121 ++++++++++++++++++++++++ data/sources/uk/context.json | 11 +++ data/sources/uk/incidents.json | 22 +++++ data/sources/uk/prevention.json | 55 +++++++++++ 5 files changed, 253 insertions(+) diff --git a/data/sources/eu/context.json b/data/sources/eu/context.json index c717d525..404cb2aa 100644 --- a/data/sources/eu/context.json +++ b/data/sources/eu/context.json @@ -487,6 +487,50 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "Slovensko channel RSS used as broad Slovakia trigger feed under strict keyword gating." + }, + { + "id": "germany-federal-prosecutor-current-press-en", + "provider": "German Federal Public Prosecutor - Current Press Releases (EN)", + "endpoint": "https://www.generalbundesanwalt.de/EN/Press/current_press_releases/current_press_releases_node.html", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official German federal prosecutor English press releases covering terrorism and national-security prosecutions." + }, + { + "id": "netherlands-om-terrorisme", + "provider": "Dutch Public Prosecution Service - Terrorisme", + "endpoint": "https://www.om.nl/onderwerpen/terrorisme", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Dutch prosecution service terrorism topic page for arrests, charges and court actions linked to terrorism cases." + }, + { + "id": "netherlands-om-terrorismefinanciering-nieuws", + "provider": "Dutch Public Prosecution Service - Terrorismefinanciering Nieuws", + "endpoint": "https://www.om.nl/onderwerpen/terrorismefinanciering/nieuws", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Dutch prosecution updates focused on terrorism-financing investigations and prosecutions." + }, + { + "id": "guardia-civil-rss-list", + "provider": "Guardia Civil - RSS List", + "endpoint": "https://web.guardiacivil.es/va/tramites/rss_list/", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Spanish Guardia Civil RSS index page for official feed discovery on law-enforcement and security operations." } ] } diff --git a/data/sources/international/context.json b/data/sources/international/context.json index a5086b76..19415b75 100644 --- a/data/sources/international/context.json +++ b/data/sources/international/context.json @@ -788,6 +788,127 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "Investigative organized-crime reporting feed focused on Latin America criminal ecosystems and violence dynamics." + }, + { + "id": "southfront-feed", + "provider": "SouthFront", + "endpoint": "https://southfront.org/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Military-conflict narrative feed tracked only as low-confidence geopolitical context under strict keyword gating." + }, + { + "id": "inteltechniques-blog-feed", + "provider": "IntelTechniques Blog", + "endpoint": "https://inteltechniques.com/blog/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "OSINT tradecraft blog feed for investigative methods, tooling and source-discovery context." + }, + { + "id": "reddit-worldnews-rss", + "provider": "Reddit - r/worldnews", + "endpoint": "https://www.reddit.com/r/worldnews/.rss", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "High-noise social signal feed retained as low-confidence early narrative and incident chatter context." + }, + { + "id": "urban-terrorism-europe-feed", + "provider": "Urban Terrorism in Europe (University of Birmingham)", + "endpoint": "https://blog.bham.ac.uk/urbterr/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Academic research feed focused on urban terrorism trends, impacts and far-right violence in Europe." + }, + { + "id": "investigative-project-terrorism-rss", + "provider": "Investigative Project on Terrorism", + "endpoint": "https://www.investigativeproject.org/articles_rss_2.0.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Specialist terrorism-analysis feed used for extremist-network and financing narrative monitoring." + }, + { + "id": "allafrica-international-terrorism-rdf", + "provider": "AllAfrica - International Terrorism", + "endpoint": "https://allafrica.com/tools/headlines/rdf/terrorism/headlines.rdf", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Africa-focused terrorism headline feed for regional incident and counter-terror operation context." + }, + { + "id": "strategic-intelligence-terrorism-war-feed", + "provider": "Strategic Intelligence Service - Terrorism and War Updates", + "endpoint": "https://intelligencebriefs.com/category/terrorism-war/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Counter-terrorism intelligence update feed for East Africa and broader conflict developments." + }, + { + "id": "intelnews-feed", + "provider": "IntelNews", + "endpoint": "https://intelnews.org/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Intelligence and espionage reporting feed used for security-service and geopolitical escalation context." + }, + { + "id": "aymennaltamimi-substack-feed", + "provider": "Aymenn's Monstrous Publications", + "endpoint": "https://www.aymennaltamimi.com/feed", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Middle East conflict-analysis Substack feed with primary-source interviews and militant-group coverage." + }, + { + "id": "ict-israel-feed", + "provider": "International Institute for Counter-Terrorism (ICT)", + "endpoint": "https://ict.org.il/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "ICT research and situational update feed on terrorism, regional conflict and threat analysis." + }, + { + "id": "interpol-news-page-en", + "provider": "INTERPOL - News", + "endpoint": "https://www.interpol.int/en/News-and-Events/News", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "INTERPOL English news listing for global law-enforcement operations, terrorism and border-security statements." } ] } diff --git a/data/sources/uk/context.json b/data/sources/uk/context.json index 3b8da0e8..7fb3b605 100644 --- a/data/sources/uk/context.json +++ b/data/sources/uk/context.json @@ -1827,6 +1827,17 @@ "isTrustedOfficial": false, "requiresKeywordMatch": true, "comment": "Investigative UK commentary feed used as narrative and corruption-related context under keyword gating." + }, + { + "id": "reddit-unitedkingdom-rss", + "provider": "Reddit - r/unitedkingdom", + "endpoint": "https://www.reddit.com/r/unitedkingdom/.rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "High-noise UK social-discourse feed retained only as low-confidence local narrative and unrest context." } ] } diff --git a/data/sources/uk/incidents.json b/data/sources/uk/incidents.json index 4c85082e..f97c62ca 100644 --- a/data/sources/uk/incidents.json +++ b/data/sources/uk/incidents.json @@ -824,6 +824,28 @@ "isTrustedOfficial": true, "requiresKeywordMatch": true, "comment": "BTP searchable news listing for incident retrieval across rail and station policing topics." + }, + { + "id": "mi5-terrorism-news-category", + "provider": "MI5 - Terrorism News", + "endpoint": "https://www.mi5.gov.uk/news-categories/terrorism", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "MI5 terrorism news category page for official statements and operationally relevant threat-related updates." + }, + { + "id": "cps-news-category-feed", + "provider": "Crown Prosecution Service - News", + "endpoint": "https://www.cps.gov.uk/cps/news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "CPS news listing used for terrorism charging and sentencing announcements in UK criminal proceedings." } ] } diff --git a/data/sources/uk/prevention.json b/data/sources/uk/prevention.json index 72f936c1..324ea379 100644 --- a/data/sources/uk/prevention.json +++ b/data/sources/uk/prevention.json @@ -338,6 +338,61 @@ "isTrustedOfficial": true, "requiresKeywordMatch": true, "comment": "West Yorkshire Police community alert portal for local warning and prevention notices." + }, + { + "id": "protectuk-news", + "provider": "ProtectUK - News", + "endpoint": "https://www.protectuk.police.uk/news", + "kind": "html", + "lane": "prevention", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "ProtectUK preventative-security updates including protective security guidance, preparedness and Martyn's Law context." + }, + { + "id": "home-office-terrorism-police-powers-collection", + "provider": "UK Home Office - Operation of Police Powers under the Terrorism Act 2000", + "endpoint": "https://www.gov.uk/government/collections/operation-of-police-powers-under-the-terrorism-act-2000", + "kind": "html", + "lane": "prevention", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": false, + "comment": "Official Home Office collection for quarterly terrorism arrest, outcomes and stop-search statistics trend monitoring." + }, + { + "id": "npsa-national-security-threats", + "provider": "National Protective Security Authority - National Security Threats", + "endpoint": "https://www.npsa.gov.uk/threat-and-risk-management/national-security-threats", + "kind": "html", + "lane": "prevention", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "NPSA guidance on terrorism, state threats and protective-security risk management for prevention context." + }, + { + "id": "hedayah-news", + "provider": "Hedayah - News", + "endpoint": "https://hedayah.com/news/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "PVE/CVE programme updates feed for radicalisation prevention, reintegration and community resilience context." + }, + { + "id": "tech-against-terrorism-news", + "provider": "Tech Against Terrorism - News", + "endpoint": "https://techagainstterrorism.org/news", + "kind": "html", + "lane": "prevention", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Online terrorist-content moderation and platform-abuse analysis updates relevant to digital CT prevention." } ] } From 1158bac9bbe4aeca34e5c7c879942f8b6fde4c69 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:06:37 +0000 Subject: [PATCH 25/25] Compile catalog for expanded CT source batch Agent-Logs-Url: https://github.com/potemkin666/AlbertAlert/sessions/5c1ddfa5-618b-438a-b7cb-be6e1863d911 Co-authored-by: potemkin666 <183807833+potemkin666@users.noreply.github.com> --- data/sources.json | 263 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 263 insertions(+) diff --git a/data/sources.json b/data/sources.json index a5ef3840..ec45ff2f 100644 --- a/data/sources.json +++ b/data/sources.json @@ -557,6 +557,54 @@ "requiresKeywordMatch": true, "comment": "Slovensko channel RSS used as broad Slovakia trigger feed under strict keyword gating." }, + { + "id": "germany-federal-prosecutor-current-press-en", + "provider": "German Federal Public Prosecutor - Current Press Releases (EN)", + "endpoint": "https://www.generalbundesanwalt.de/EN/Press/current_press_releases/current_press_releases_node.html", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Official German federal prosecutor English press releases covering terrorism and national-security prosecutions.", + "refreshEveryHours": 1 + }, + { + "id": "netherlands-om-terrorisme", + "provider": "Dutch Public Prosecution Service - Terrorisme", + "endpoint": "https://www.om.nl/onderwerpen/terrorisme", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Dutch prosecution service terrorism topic page for arrests, charges and court actions linked to terrorism cases.", + "refreshEveryHours": 1 + }, + { + "id": "netherlands-om-terrorismefinanciering-nieuws", + "provider": "Dutch Public Prosecution Service - Terrorismefinanciering Nieuws", + "endpoint": "https://www.om.nl/onderwerpen/terrorismefinanciering/nieuws", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Dutch prosecution updates focused on terrorism-financing investigations and prosecutions.", + "refreshEveryHours": 1 + }, + { + "id": "guardia-civil-rss-list", + "provider": "Guardia Civil - RSS List", + "endpoint": "https://web.guardiacivil.es/va/tramites/rss_list/", + "kind": "html", + "lane": "context", + "region": "eu", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "Spanish Guardia Civil RSS index page for official feed discovery on law-enforcement and security operations.", + "refreshEveryHours": 1 + }, { "id": "belgian-federal-police-news", "provider": "Belgian Federal Police - News", @@ -2612,6 +2660,128 @@ "requiresKeywordMatch": true, "comment": "Investigative organized-crime reporting feed focused on Latin America criminal ecosystems and violence dynamics." }, + { + "id": "southfront-feed", + "provider": "SouthFront", + "endpoint": "https://southfront.org/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Military-conflict narrative feed tracked only as low-confidence geopolitical context under strict keyword gating." + }, + { + "id": "inteltechniques-blog-feed", + "provider": "IntelTechniques Blog", + "endpoint": "https://inteltechniques.com/blog/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "OSINT tradecraft blog feed for investigative methods, tooling and source-discovery context." + }, + { + "id": "reddit-worldnews-rss", + "provider": "Reddit - r/worldnews", + "endpoint": "https://www.reddit.com/r/worldnews/.rss", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "High-noise social signal feed retained as low-confidence early narrative and incident chatter context." + }, + { + "id": "urban-terrorism-europe-feed", + "provider": "Urban Terrorism in Europe (University of Birmingham)", + "endpoint": "https://blog.bham.ac.uk/urbterr/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Academic research feed focused on urban terrorism trends, impacts and far-right violence in Europe." + }, + { + "id": "investigative-project-terrorism-rss", + "provider": "Investigative Project on Terrorism", + "endpoint": "https://www.investigativeproject.org/articles_rss_2.0.xml", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Specialist terrorism-analysis feed used for extremist-network and financing narrative monitoring." + }, + { + "id": "allafrica-international-terrorism-rdf", + "provider": "AllAfrica - International Terrorism", + "endpoint": "https://allafrica.com/tools/headlines/rdf/terrorism/headlines.rdf", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Africa-focused terrorism headline feed for regional incident and counter-terror operation context." + }, + { + "id": "strategic-intelligence-terrorism-war-feed", + "provider": "Strategic Intelligence Service - Terrorism and War Updates", + "endpoint": "https://intelligencebriefs.com/category/terrorism-war/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Counter-terrorism intelligence update feed for East Africa and broader conflict developments." + }, + { + "id": "intelnews-feed", + "provider": "IntelNews", + "endpoint": "https://intelnews.org/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Intelligence and espionage reporting feed used for security-service and geopolitical escalation context." + }, + { + "id": "aymennaltamimi-substack-feed", + "provider": "Aymenn's Monstrous Publications", + "endpoint": "https://www.aymennaltamimi.com/feed", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Middle East conflict-analysis Substack feed with primary-source interviews and militant-group coverage." + }, + { + "id": "ict-israel-feed", + "provider": "International Institute for Counter-Terrorism (ICT)", + "endpoint": "https://ict.org.il/feed/", + "kind": "rss", + "lane": "context", + "region": "international", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "ICT research and situational update feed on terrorism, regional conflict and threat analysis." + }, + { + "id": "interpol-news-page-en", + "provider": "INTERPOL - News", + "endpoint": "https://www.interpol.int/en/News-and-Events/News", + "kind": "html", + "lane": "context", + "region": "international", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "INTERPOL English news listing for global law-enforcement operations, terrorism and border-security statements.", + "refreshEveryHours": 1 + }, { "id": "gctf-news", "provider": "Global Counterterrorism Forum (GCTF) a News", @@ -5686,6 +5856,17 @@ "requiresKeywordMatch": true, "comment": "Investigative UK commentary feed used as narrative and corruption-related context under keyword gating." }, + { + "id": "reddit-unitedkingdom-rss", + "provider": "Reddit - r/unitedkingdom", + "endpoint": "https://www.reddit.com/r/unitedkingdom/.rss", + "kind": "rss", + "lane": "context", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "High-noise UK social-discourse feed retained only as low-confidence local narrative and unrest context." + }, { "id": "avon-and-somerset-police-news-html", "provider": "Avon and Somerset Police - News", @@ -6586,6 +6767,30 @@ "comment": "BTP searchable news listing for incident retrieval across rail and station policing topics.", "refreshEveryHours": 1 }, + { + "id": "mi5-terrorism-news-category", + "provider": "MI5 - Terrorism News", + "endpoint": "https://www.mi5.gov.uk/news-categories/terrorism", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "MI5 terrorism news category page for official statements and operationally relevant threat-related updates.", + "refreshEveryHours": 1 + }, + { + "id": "cps-news-category-feed", + "provider": "Crown Prosecution Service - News", + "endpoint": "https://www.cps.gov.uk/cps/news", + "kind": "html", + "lane": "incidents", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "CPS news listing used for terrorism charging and sentencing announcements in UK criminal proceedings.", + "refreshEveryHours": 1 + }, { "id": "attorney-generals-office-html", "provider": "Attorney General's Office", @@ -7693,6 +7898,64 @@ "comment": "West Yorkshire Police community alert portal for local warning and prevention notices.", "refreshEveryHours": 1 }, + { + "id": "protectuk-news", + "provider": "ProtectUK - News", + "endpoint": "https://www.protectuk.police.uk/news", + "kind": "html", + "lane": "prevention", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "ProtectUK preventative-security updates including protective security guidance, preparedness and Martyn's Law context.", + "refreshEveryHours": 1 + }, + { + "id": "home-office-terrorism-police-powers-collection", + "provider": "UK Home Office - Operation of Police Powers under the Terrorism Act 2000", + "endpoint": "https://www.gov.uk/government/collections/operation-of-police-powers-under-the-terrorism-act-2000", + "kind": "html", + "lane": "prevention", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": false, + "comment": "Official Home Office collection for quarterly terrorism arrest, outcomes and stop-search statistics trend monitoring.", + "refreshEveryHours": 1 + }, + { + "id": "npsa-national-security-threats", + "provider": "National Protective Security Authority - National Security Threats", + "endpoint": "https://www.npsa.gov.uk/threat-and-risk-management/national-security-threats", + "kind": "html", + "lane": "prevention", + "region": "uk", + "isTrustedOfficial": true, + "requiresKeywordMatch": true, + "comment": "NPSA guidance on terrorism, state threats and protective-security risk management for prevention context.", + "refreshEveryHours": 1 + }, + { + "id": "hedayah-news", + "provider": "Hedayah - News", + "endpoint": "https://hedayah.com/news/", + "kind": "html", + "lane": "prevention", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "PVE/CVE programme updates feed for radicalisation prevention, reintegration and community resilience context." + }, + { + "id": "tech-against-terrorism-news", + "provider": "Tech Against Terrorism - News", + "endpoint": "https://techagainstterrorism.org/news", + "kind": "html", + "lane": "prevention", + "region": "uk", + "isTrustedOfficial": false, + "requiresKeywordMatch": true, + "comment": "Online terrorist-content moderation and platform-abuse analysis updates relevant to digital CT prevention." + }, { "id": "gov-uk-proscribed-terrorist-orgs", "provider": "GOV.UK a Proscribed Terrorist Organisations",